数组迭代方法

1 forEach 对数组的每个元素执行一次提供的函数。

var arr = [1, 2, 3];
arr.forEach(function (element, index, array) {
  console.log(element, index, array)
})
// output
  1 0 [ 1, 2, 3 ]
  2 1 [ 1, 2, 3 ]
  3 2 [ 1, 2, 3 ]

forEach方法还可以传入第二个参数,这个参数是可选的。如果给forEach传递了第二个参数,callback函数里的this将指向这个参数。
注意:如果是箭头函数形式,那么第二个参数改变指向这种操作是无效的,因为箭头函数没有自己的this,它的this是继承而来。

var arr = [1, 2, 3];
var obj = { a: 1 };
arr.forEach(function (element, index, array) {
  console.log(element, index, array, this)
}, obj)
// output
  1 0 [ 1, 2, 3 ] { a: 1 }
  2 1 [ 1, 2, 3 ] { a: 1 }
  3 2 [ 1, 2, 3 ] { a: 1 }

2 map
map方法的作用就是将原数组按照一定的规则映射成一个新的数组。再将其返回,是返回一个新的数组,而不是将原数组直接改变。使用方法和参数都跟forEach相似。

var arr= [1, 2, 3];
var arrayOfSquares = arr.map(function (element) {
  return element * element; // 需要有return
});
console.log(arrayOfSquares); //[1, 4, 9]

3 filter 为“过滤”、“筛选”的意思。指数组filter后,返回过滤后的新数组。

var arr = [0, 1, 2, 3];
var newArr = arr.filter((it) => {
  return it;
})
var newArr2 = arr.filter((it) => {
  return it >= 2;
})
// var newArr2 = arr.filter(e => e >= 2)   (简写,只有一个return语句时,将括号都去掉)
console.log(newArr); // [1, 2, 3]
console.log(newArr2); // [2, 3]

4 some (返回布尔值)
只要数组中的某个值,符合你给定的判断条件就返回true;否则,返回false。

var passed = [1, 2, 3].some(it => it >= 4);
var passed2 = [1, 2, 3, 4, 5].some(it => it >= 4); // 遍历到4就停止了,不会像foreach那样全部遍历完
console.log(passed); // false
console.log(passed2); // true

5 every (返回布尔值)
every方法与some方法相反,every方法是数组中的所有值都符合你给定的判断条件的时候才会返回true,否则就返回false。

var passed = [2, 3, 4].every(it => it >= 3);
var passed2 = [3, 4, 5].every(it => it >= 3);
console.log(passed); // false
console.log(passed2); // true

6 reduce

语法:

var sum = [1, 2, 3].reduce(function (prev, cur, index, arr) {
  // ...
}, init);

arr 表示原数组;
prev 表示上一次调用回调时的返回值,或者初始值 init;
cur 表示当前正在处理的数组元素;
index 表示当前正在处理的数组元素的索引,若提供 init 值,则索引为0,否则索引为1;
init 表示初始值。
其实常用的参数只有两个:prevcur

(1)求数组之和

var sum = [1, 2, 3].reduce(function (prev, cur) {
  return prev + cur;
});
console.log(sum);

(2)求数组项最大值

var max = [2, 3, 1, 5, 0].reduce(function (prev, cur) {
  return Math.max(prev, cur);
});
console.log(max); // 5

(3)数组去重

var newArr = [1, 1, 2, 3, 3, 4].reduce((prev, cur) => {
  prev.indexOf(cur) === -1 && prev.push(cur);
  return prev;
}, []);
console.log(newArr); // [1,2,3,4]

reduceRight() 用法与reduce()相同,只是遍历的顺序相反,它是从数组的最后一项开始,向前遍历到第一项。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敲起来blingbling

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值