js 数组遍历方法大全

现在js的使用越来越频繁了,以前的单页面js也能使用,大量的mvvm框架也需要使用到js,虽然他们之间有些区别,主要的东西区别不大,还是能通用的,下面就讲讲js中数组的遍历方法。

  1. for
  2. for in
  3. for of
  4. map
  5. foreach
  6. filter
  7. find
  8. findIndex
  9. every
  10. some
  11. reduce
  12. reduceRight

下面就将用代码一一演示数组的遍历。

let arr = ['a','b','c'];
for(var i=0;i<arr.length;i++){
    console.log('数组的值:',arr[i],'数组的key',i);
}
let arr = ['a','b','c'];
for(var k in arr){
    console.log('数组的键:',k);
}
let arr = ['a','b','c'];
for(var item of arr){
    console.log('数组的值:',item);
}
let arr = ['a','b','c'];
let res = arr.map((item,k) => {
    console.log('数组的值:',item,'数组的键:',k);
    if(item == 'b'){
        return 'd';
    }
    return item;
})
console.log('res',res,arr)
//map和下面的forEach一样都能实现遍历数组的作用,
map主要是产生的新数组,长度和原数组的长度是一致的,这点上与filter相反。
let arr = ['a','b','c'];
arr.forEach((item,k) => {
    console.log('数组的值:',item,'数组的键:',k);
})
//forEach是为数组中含有有效值的每一项,执行一次callback函数,那些从未被赋值的或者已删除的项将跳过,callback会一次传入三个参数,依此是:数组当前项的值,当前项的key,数组对象本身。
let arr = [1,2,3,3,7,9];
let res = arr.find((item,index,arr) => {
    console.log('数组的值:',item,'数组的键:',index);
    return item > 3;
})
> 7
// * find 的返回结果是第一个符合条件的元素,返回结果不是数组了,并且找到符合条件的元素就会立即中断循环,立即返回结果。
// find 主要是过滤数组时使用,结果会返回第一个符合条件的元素,并不会影响原数组的值。当没有符合条件的值时 结果为undefined
// 如上例子返回结果就是 7



//filter返回一个新的数组,该数组内的元素满足回调条件,新数组的长度可能会比原数组有所减少。
//map是将原数组内的元素处理后再返回,生成一个新的数组,新数组的长度和原数组的长度是一致的。
//reduce是对数组中的元素依此处理,将上次处理的结果作为下次处理的输入,最后得到最终的结果。
let arr = [1,2,3,3,7,9];
let res = arr.filter((item,index,arr) => {
    console.log('数组的值:',item,'数组的键:',index);
    return item > 3;
})
console.log('res',res)
// filter 处理结果是生成一个新的数组,原数组保持不变,新数组是符合过滤条件的元素的集合
let arr = [1,2,3,3,7,9];
let res = arr.reduce((prev, cur, index, arr) => {
    console.log(prev, cur, index);
    return prev + cur;
})
console.log('res',res);
// 上面例子返回结果为 25 例子为通过reduce 计算数组的值的加法。
// reduce 用法比较特殊,其实使用其他的方法也能很好的实现,但是总有一些场景是适合reduce的.

var sum = arr.reduce((x,y)=>x+y) //计算数组元素之和
var mul = arr.reduce((x,y)=>x*y) //计算数组元素乘积

//更为具体的一些用法可以参考链接 
 https://www.cnblogs.com/webSnow/p/15262337.html

You May Also Like