js之数组遍历

168 阅读1分钟

1、Array.prototype.forEach(callback(currentItem[,index[,array])[,thisArg])

遍历数组,返回undefined,不改变原数组 没有办法终止循环,如果有终止需求考虑some,every,find,findIndex方法

2、Array.prototype.map(callback(currentItem[,index[,array])[,thisArg])

遍历数组,每个元素执行callback,返回新值,组成一个新数组,最终所有返回的新值组成新数组,返回这个新数组,不改变原数组 没有办法终止循环

3、Array.prototy.filter(callback(currentItem[,index[,array])[,thisArg])

过滤出满足callback的值,所有这些值组成新数组,返回这个新数组,不改变原数组

4、Array.prototy.entries()

返回新数组的Iterator,具有next()方法,返回

var a = [1,2,3];
var b = a.entries();
b.next() //{done: false, value: [0, 1]}

Array.prototy.keys()

返回索引数组的Iterator,具有next()方法,返回

var a = [1,2,3];
var b = a.keys();
b.next() //{done: false, value: [0, 0]}

Array.prototy.values()

返回值数组的Iterator,具有next()方法,返回

var a = [1,2,3];
var b = a.values();
b.next() //{done: false, value: [0, 1]}

entries、keys、values的遍历方法,for..of..

var a = [1,2,3];
for(let [index, value] of a.entries()){
    console.log(index, value);//0 1, 1 2, 2 3
}
var arr = ["a", , "c"];
var sparseKeys = Object.keys(arr);
var denseKeys = [...arr.keys()];
console.log(sparseKeys); // ['0', '2']
console.log(denseKeys);  // [0, 1, 2]