JS数组迭代方法

1. forEach(),为数组中的每个元素执行一次回调函数,方法: array.forEach(function(currentValue,index,arr),thisValue),参数:currentValue——必需,当前元素,index——可选,当前元素的索引值,arr——可选,当前元素所属的数组对象,thisValue——可选,当执行回调寒食时,用作this的值

var arr1 = [3, 7, 4, 9, 0];
arr1.forEach(function (e, i, a) {
    console.log(e, i, a)
});

console.log(arr1);

//3 0 [ 3, 7, 4, 9, 0 ]
//7 1 [ 3, 7, 4, 9, 0 ]
//4 2 [ 3, 7, 4, 9, 0 ]
//9 3 [ 3, 7, 4, 9, 0 ]
//0 4 [ 3, 7, 4, 9, 0 ]
// [ 3, 7, 4, 9, 0 ]

2. entries(),返回一个数组迭代器对象,该迭代器包含所有数组元素的键值对(很少用到这个方法,资料不全)

var arr = [3, 6, 'o', 'p', 'hi'];
var arr2 = arr.entries();

console.log(arr2);                  //{}
console.log(arr2.next());           //{ value: [ 0, 3 ], done: false }

3. every(),测试数组中所有元素都符合指定要求

var arr = [2, 4, 6, 7];

var tag1 = arr.every(function (val) {
    return val > 1;
});

var tag2 = arr.every(function (val) {
    return val>9
});

console.log(tag1);              //true
console.log(tag2);              //false
console.log(arr);               //[ 2, 4, 6, 7 ]

4. some(),数组中至少有一项符合要求,返回true,否则false

var arr = [1, 5, 8, 3];

var tag1 = arr.some(function (val) {
    return val > 7
});

var tag2 = arr.some(function (val) {
    return val > 8
});

console.log(tag1);          //true
console.log(tag2);          //false
console.log(arr);           //[ 1, 5, 8, 3 ]

5. filter(),将所有过滤函数中符合要求的元素放进一个新数组

var arr1 = [3, 6, 4, 9, 16];

var arr2 = arr1.filter(function (val) {
    return val % 2 === 0;
});

console.log(arr2);              //[ 6, 4, 16 ]
console.log(arr1);              //[ 3, 6, 4, 9, 16 ]

6. find(),找到第一个符合要求的元素的值,找不到返回undefined

var arr = [5, 3, 2, 8, 6, 4, 5];

var tag1 = arr.find(function (val) {
    return val > 7;
});

var tag2 = arr.find(function (val) {
    return val > 10;
})

console.log(tag1);           //8
console.log(tag2);           //undefined
console.log(arr);           //[ 5, 3, 2, 8, 6, 4, 5 ]

7. findIndex(),找到第一个符合要求的值,并返回该元素下标,如果没有,返回-1

var arr = [7, 5, 4, 2, 0, 1, 4];

var tag1 = arr.findIndex(function (val) {
    return val % 2 === 0;
});
var tag2 = arr.findIndex(function (val) {
    return val > 8;
});

console.log(tag1);          //2
console.log(tag2);          //-1
console.log(arr);           //[ 7, 5, 4, 2, 0, 1, 4 ]

8. keys(),返回一个数组迭代器对象,该迭代器会包含所有数组元素的键

var arr = [6, 4, 6, 9, 3];

console.log(arr.keys().next());      //{ value: 0, done: false }
console.log(arr);                    //[ 6, 4, 6, 9, 3 ]

9. map(),返回一个由回调函数的返回值组成的函数

var arr1 = [5, 3, 8, 9];

var arr2 = arr1.map(function (val) {
    return val = val * 2;
});

console.log(arr2);          //[ 10, 6, 16, 18 ]
console.log(arr1);          //[ 5, 3, 8, 9 ]

 10.reduce(),从左到右为每个数组元素执行一次回调函数,并把上次回调函数的返回值放在一个暂存器中传给下次回调函数,并返回最后一次回调函数的返回值

arr.reduce(function(total,currentValue,currentIndex,arr),initialValue)

参数:total——必需,初始值,或者计算结束后的返回值 currentValue——必需,当前元素 // currentIndex——可选,当前元素的索引 arr——可选,当前数组

var arr1 = [6, 4, 3, 9, 9, 0, 13];
var arr2 = [4, 6, 'h', 8, 'i', 6, 14];
var tag1 = arr1.reduce(function (total, num) {
    return total + num
});
var tag2 = arr2.reduce(function (total, num) {
    return total + num
});

console.log(tag1);               //44
console.log(arr1);               //[ 6, 4, 3, 9, 9, 0, 13 ]
console.log(tag2);               //10h8i614
console.log(arr2);               //[ 4, 6, 'h', 8, 'i', 6, 14 ]

 11. reduceRight(),类似reduce,数组遍历从右到左

var arr1 = [6, 4, 3, 9, 9, 0, 13];
var arr2 = [4, 6, 'h', 8, 'i', 6, 14];
var tag1 = arr1.reduceRight(function (total, num) {
    return total + num
});
var tag2 = arr2.reduceRight(function (total, num) {
    return total + num
});

console.log(tag1);               //44
console.log(arr1);               //[ 6, 4, 3, 9, 9, 0, 13 ]
console.log(tag2);               //20i8h64
console.log(arr2);               //[ 4, 6, 'h', 8, 'i', 6, 14 ]

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值