forEach
const a = [1, 2, 3]
a.forEach(i => {
i = 4
})
console.log(a)
// [ 1, 2, 3 ]
b = [1, 2, 3]
b.forEach((i, index) => {
b[index] = 4
})
console.log(b) // [ 4, 4, 4 ]
const c = [
{a: 1},
{a: 2},
{a: 3}
]
c.forEach(i => {
i.a = 4
})
console.log(c)
// [ { a: 4 }, { a: 4 }, { a: 4 } ]
reduce用法
callback (执行数组中每个值的函数,包含四个参数)
1、previousValue (上一次调用回调返回的值,
或者是提供的初始值(initialValue))
2、currentValue (数组中当前被处理的元素)
3、index (当前元素在数组中的索引)
4、array (调用 reduce 的数组)
initialValue (作为第一次调用 callback 的第一个参数。)
arr.reduce(callback,[initialValue])
var arr = [1, 2, 3, 4];
var sum = arr.reduce(function(prev, cur, index, arr) {
console.log(prev, cur, index);
return prev + cur;
})
console.log(arr, sum);
打印结果:
// 1 2 1
// 3 3 2
// 6 4 3
// [1, 2, 3, 4] 10
var arr = [1, 2, 3, 4];
var sum = arr.reduce(function(prev, cur, index, arr) {
console.log(prev, cur, index);
return prev + cur;
},0) //注意这里设置了初始值0
console.log(arr, sum);
打印结果:
0 1 0
1 2 1
3 3 2
6 4 3
[1, 2, 3, 4] 10
一、reduce的简单用法
var arr = [1, 2, 3, 4];
var sum = arr.reduce((x, y) => x + y)
var mul = arr.reduce((x, y) => x * y)
console.log( sum ); //求和,10
console.log( mul ); //求乘积,24
二、reduce的高级用法
- 计算数组中每个元素出现过的次数
let names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice'];
let nameNum = names.reduce((pre, cur)=> {
if(cur in pre) {
pre[cur]++
} else {
pre[cur] = 1
}
return pre
}, {})
console.log(nameNum)
// { Alice: 2, Bob: 1, Tiff: 1, Bruce: 1 }
- 去重
let arr = [1,2,3,4,4,1]
let newArr = arr.reduce((pre, cur) => {
if (!pre.includes(cur)) {
return pre.concat(cur)
} else {
return pre
}
}, [])
console.log(newArr) // [ 1, 2, 3, 4 ]