1.for...in
以原始插入顺序遍历对象的可枚举属性,对于每个不同的属性,语句都会被执行。写法:for(var variable in obj)。例子: var obj={a:1,c:3,b:2},for(var item in obj){console.log("obj."+item+"="+obj[item])},打印结果:obj.a=1,obj.c=3,obj.b=2。使用注意:for...in不一定返回的是按一定顺序的索引,只能获取键名,不能直接获取键值,因此不应该被用来迭代一个下表很重要的数组,适合用于遍历对象属性。
2.for...of
es6提供的新语法,可以用来替代数组原始的forEach方法,使用范围包括数组、字符串、类似数组的对象(arguments对象、DOM NodeList对象)。写法:for(let variable of obj),例子:const arr=['red','green','blue'];for(letv of arr){console.log(v); // red green blue}使用注意:for...of循环获取的是键值,如果要获取索引,可以通过数组实例的entries(键值对的索引)方法和keys(键名的索引)方法,数组的遍历器接口只返回具有数字索引的属相,因此不适合用来遍历对象。
3.数组的forEach方法
es5数组对象自带的方法,调用数组中的每个元素,并将每个元素传给回调函数使用。写法:[].forEach(function(value,index,array){});使用注意:在第一次调用回调函数之前,数组中的元素都已经是确定的。
4.map()方法返回一个新数组,这个数组中的元素是原始数组中的每个元素调用回调函数之后返回的结果,按原始数组元素依次处理数组中的元素,map方法不会改变原始数组。写法:array.map(function(currentValue,index,arr), thisValue),值得注意的是要记得为每个元素指定一个独一无二的key