前言

js中遍历方法很多,在ES6新特性中出现了很多新的遍历方法,使遍历数组和对象更加方便,下面开始列举各种方法。

1.遍历对象

1.1.for…in…循环遍历对象自身和继承的可枚举的属性(不包括Symbol,因为symbol的实例是唯一的不可变的, 用于确保对象的属性不重复)

for…in是用于遍历对象和数组的方法

let obj = {
            a: 1,
            b: '猪八戒',
            c: [1, 2, 3, '孙悟空'],
            d: {
                name: '唐僧'
            }
        }
        //k代表对象的属性名,obj[k]就是属性值
        for (const k in obj) {
            console.log(k,obj[k]);
        }
        //这是懒得再写一个数组,直接调用对象中的数组结果为第二个图
        for (const k in obj.c) {
            console.log(k,obj.c[k]);
        }

ES6遍历方法,forEach、for...in,for..of
ES6遍历方法,forEach、for...in,for..of

1.2.Object.keys()遍历

返回值:返回一个数组
参数:需要遍历的元素
注意:返回值包括对象自身的(不包含所继承的)所有可枚举属性(不含Symbol属性),一般和其他循环搭配使用

  let obj = {
            a: 1,
            b: '猪八戒',
            c: [1, 2, 3, '孙悟空'],
            d: {
                name: '唐僧'
            }
        }
        //返回值只有一个含有属性名的数组
        console.log(Object.keys(obj));
        //搭配foreach就可以拿到所有的属性值
        //这里用了es6的箭头函数的语法糖
        //()=>{}当只有一个参数的时候省略()当执行语句只有一句省略{}
        Object.keys(obj).forEach(key=>
             console.log(key,obj[key])
        );

ES6遍历方法,forEach、for...in,for..of

1.3Object.getOwnPropertyNames(obj)

返回值:返回一个数组
参数:需要遍历的元素
注意:返回值包括对象自身的所有属性(不含Symbol属性,但是包括不可枚举属性).

 let obj = {
            a: 1,
            b: '猪八戒',
            c: [1, 2, 3, '孙悟空'],
            d: {
                name: '唐僧'
            }
        }
        //返回一个只有属性名的数组
        console.log(Object.getOwnPropertyNames(obj));
        //这里用了es6的箭头函数的语法糖
        //()=>{}当只有一个参数的时候省略()当执行语句只有一句省略{}
        Object.getOwnPropertyNames(obj).forEach(key=>{
            console.log(key,obj[key]);
        })

ES6遍历方法,forEach、for...in,for..of

1.4 Reflect.ownKeys()

返回值:返回一个数组
参数:需要遍历的元素
注意:返回值包含对象自身的所有属性,不管属性名是Symbol或字符串,也不管是否可枚举

let obj = {
            a: 1,
            b: '猪八戒',
            c: [1, 2, 3, '孙悟空'],
            d: {
                name: '唐僧'
            }
        }
        console.log(Reflect.ownKeys(obj));
        //这里用了es6的箭头函数的语法糖
        //()=>{}当只有一个参数的时候省略()当执行语句只有一句省略{}
        Reflect.ownKeys(obj).forEach(key=>console.log(key,obj[key]))

ES6遍历方法,forEach、for...in,for..of

2.遍历数组

2.1. forEach

 let arr=[1,3,4,'猪八戒',true]
       arr.forEach((value,index,array)=>{
        console.log('value是:',value);//value是属性值
        console.log('index是:',index);//index是元素小下标
        console.log('array是:',array);//遍历的哪一个元素
       })

ES6遍历方法,forEach、for...in,for..of

2.2for…of

支持大多数数组,还支持大多数类数组对象,比如说获取很多的li元素也就是NodeList对象,也支持遍历字符串,原理是吧字符串视为Unicode字符来进行遍历

 let arr=[1,3,4,'猪八戒',true]
       for (const k of arr) {
        console.log(k);
       }

3.3 for…in

在遍历对象时第一个进行演示了这里不演示了

总结

ES6出现的这些新方法进行遍历对象、数组使我们获取元素属性更加的方便,简化代码量,更快速的获取到元素。