reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值。
转载于 https://segmentfault.com/a/1190000010731933
arr.reduce(callback,[initialValue])
-
callback (执行数组中每个值的函数,包含四个参数)
- previousValue (上一次调用回调返回的值,或者是提供的初始值(initialValue))
- currentValue (数组中当前被处理的元素)
- index (当前元素在数组中的索引)
- array (调用 reduce 的数组)
- initialValue (作为第一次调用 callback 的第一个参数。)
var items = [10, 120, 1000];
// our reducer function
var reducer = function add(sumSoFar, item) {
sumSoFar.sum = sumSoFar.sum + item;
return sumSoFar;
};
// do the job
var total = items.reduce(reducer, {sum: 0});
console.log(total); // {sum:1130}
flat() 方法, 扁平化数组
Array.prototype.flat = function() {
let arr = [];
this.forEach(item => {
if (Array.isArray((item))) {
arr = arr.concat(item.flat())
} else {
arr.push(item)
}
})
return arr;
}
let arr = [1, 2, 2, 5, [8, 12, 9, 9, ['12', 0]]];
console.log(arr.flat()) // [1, 2, 2, 5, 8, 12, 9, 9, "12", 0]
//按顺序排序
console.log(arr.flat().sort((a, b) => {
return a - b
}))