js中forEach,for in,for of循环的用法
for...in是es5标准,用来遍历key值,遍历对象和数组,但是一般不推荐遍历数组(数组遍历不一定按次序访问元素)
for...of是es6标准,用来遍历value值,遍历数组,( 原生具备 Iterator 接口的数据结构: Array Map Set String TypedArray 函数的arguments对象 NodeList对象)不能遍历普通对象
for...of不能遍历普通对象的原因
原因是:普通对象没有Symbol.iterator属性,如果一个对象拥有Symbol.iterator属性,那么就可以使用for...of遍历
Array的几个遍历的方法各有千秋,map是为了返回值的,forEach是为了处理但不返回值的,filter是过滤值的,如果要跳出循坏,还是用for。
for...in
语句以任意顺序遍历一个对象的可枚举属性。对于每个不同的属性,语句都会被执行。每次迭代时,分配的是属性名
补充 : 因为迭代的顺序是依赖于执行环境的,所以数组遍历不一定按次序访问元素。 因此当迭代那些访问次序重要的 arrays 时用整数索引去进行 for
循环 (或者使用 Array.prototype.forEach()
或 for...of
循环) 。
JS中every()和some()的用法
every()与some()方法都是JS中数组的迭代方法。
every()是对数组中每一项运行给定函数,如果该函数对每一项返回true,则返回true。
some()是对数组中每一项运行给定函数,如果该函数对任一项返回true,则返回true。
var arr = [ 1, 2, 3, 4, 5, 6 ];
console.log( arr.some( function( item, index, array ){
console.log( 'item=' + item + ',index='+index+',array='+array );
return item > 3;
}));
console.log( arr.every( function( item, index, array ){
console.log( 'item=' + item + ',index='+index+',array='+array );
return item > 3;
}));
网友评论