es6中reduce函数的使用:
请看下面简单的例子(数组求和):
let total = [ 0, 1, 2, 3 ].reduce(( acc, cur ) => {
return acc + cur
}, 0); //参数0表示acc的初始值,acc为上次调用函数的返回值,cur为遍历到的当前元素
console.log(total) // 6;
复杂例子1(二维数组转为一维数组):
let array = [[1, 2], [3, 4], [5, 6]].reduce(( acc, cur ) => {
return acc.concat(cur)
}, []);
console.log(array) // [ 0, 1, 3, 4, 5, 6 ]
复杂例子2(计算数组中每个元素出现的次数):
let names = ['tom', 'jim', 'jack', 'tom', 'jack'];
const countNames = names.reduce((allNames, name) => {
if (name in allNames) {
allNames[name] ++;
}
else {
allNames[name] = 1;
}
return allNames;
}, {});
console.log(countNames) // { tom: 2, jim: 1, jack: 2 }
es6中push函数的返回值是执行push后的数组长度!昨天面试没回答上来@-@