相同点:
1、都可以用来循环数组,输出数组元素、元素索引、原数组
不同点:
1、forEach没有返回值,只是单纯的遍历,可以在循环里处理数据,但会改变原数组
2、map 遍历并对其进行操作,返回新数组,不改变原数组
3、filter 筛选符合条件的元素并返回新数组,不改变原数组
4、如果用map来筛选是否满足条件的数组元素,返回值为true或false
1、array.forEach()
let arr = [40, 100, 1, 5, 25, 10]
arr.forEach((value, index, array) => {
//value代表循环数组后每一项元素,index代表每一项元素的索引,array代表原数组
arr[index] = item + 1
console.log(value, index, array)
输出: 40 0 [40, 100, 1, 5, 25, 10]
100 1 [40, 100, 1, 5, 25, 10]
1 2 [40, 100, 1, 5, 25, 10]
5 3 [40, 100, 1, 5, 25, 10]
25 4 [40, 100, 1, 5, 25, 10]
10 5 [40, 100, 1, 5, 25, 10]
})
console.log(arr)
输出:[41, 101, 2, 6, 26, 11]
2、array.map()
let arr = [40, 100, 1, 5, 25, 10]
let arr1 = arr.map((value, index, array) => {
//value代表循环数组后每一项元素,index代表每一项元素的索引,array代表原数组
console.log(value, index, array)
return value * 2
// return value > 20
输出: 40 0 [40, 100, 1, 5, 25, 10]
100 1 [40, 100, 1, 5, 25, 10]
1 2 [40, 100, 1, 5, 25, 10]
5 3 [40, 100, 1, 5, 25, 10]
25 4 [40, 100, 1, 5, 25, 10]
10 5 [40, 100, 1, 5, 25, 10]
})
console.log(arr)
console.log(arr1)
输出: [40, 100, 1, 5, 25, 10]
[80, 200, 2, 10, 50, 20] // []
注意:map函数循环处理不会改变原数组,并且不会再空数组上执行
3、array.filter()
let arr = [40, 100, 1, 5, 25, 10]
let arr1 = arr.filter((value, index, array) => {
//value代表循环数组后每一项元素,index代表每一项元素的索引,array代表原数组
console.log(value, index, array)
return value > 18
输出: 40 0 [40, 100, 1, 5, 25, 10]
100 1 [40, 100, 1, 5, 25, 10]
1 2 [40, 100, 1, 5, 25, 10]
5 3 [40, 100, 1, 5, 25, 10]
25 4 [40, 100, 1, 5, 25, 10]
10 5 [40, 100, 1, 5, 25, 10]
})
console.log(arr)
console.log(arr1)
输出: [40, 100, 1, 5, 25, 10]
[40, 100, 25]