forEach、filter、map、reduce函数

164 阅读1分钟

1.forEach

可以遍历数组、对象,但不支持continue、break关键字,可以使用return来跳出当此循环,相当于continue。

循环数组中每一个元素并采取操作,没有返回值。接收一个函数作为参数,这个函数接收三个参数:当前值、当前位置、整个数组。

arr.forEach((item, index, array)=>{}) 其中item是必须的参数。

2.map

遍历数组中每一个元素,有返回值,返回值是每一次执行的结果组成的新数组。不会改变原数组。接受一个函数作为参数,这个函数接受三个参数:当前值、当前位置、整个数组。

let newArr = arr.map((item, index, array) => {
	return item*2;
})
console.log(newArr); //[2,4,6]
console.log(arr); //[1,2,3]

3.filter

过滤数组成员,满足条件的成员组成一个新数组。filter不会改变原数组

let newArr = arr.filter((item, index, array) => {
	return item>1
})
console.log(newArr, arr)//[2,3]  [1,2,3]

map和filter的返回值是数组,可以链式使用

let newArr = arr.map((item) => {
	return item*2;
}).filter((item) => {
	return item >= 6;
})
console.log(newArr)//[6,8]

4.reduce

reduce依次处理数组的成员,最终累计为一个值

let newArr = arr.reduce((a,b) => {
	console.log(a,b);
  return a+b;
})
console.log(arr)//[1,2,3,4]
console.log(newArr)//10
//  1 2
//  3 3
//  6 4
//最终结果为10