js中reduce的用法
从左到右遍历数组的一种方式
arr.reduce(callback(previousValue,currentValue,index,array), [initialValue]);
callback 函数中 previousValue
等于
initialValue
的值或者是上一次 reduce return
回来的值
currentValue
是当前执行到的数组的值
index
是当前执行到的数组的下标
array
是执行 reduce
的
array
尝试: 1
2
3
4
5
6var a = [1,2,3,4,5,6]
a.reduce(
function(a,b,c,d){
console.log( 'previousValue= '+a+ ';currentValue= '+b+ ';index= '+c+ ';array= '+d)
return a
},[1,2,3,4])
得到结果
1 | previousValue=1,2,3,4;currentValue=1;index=0;array=1,2,3,4,5,6 |
可以感受到其用法。
例如数组累加: * * *1
2
3var a = [2,4,6,1]
sum = a.reduce(function(prev,cur){return prev+cur})
//sum = 13
因此vuejs中filterBy代码中的
1 | var keys=toArray(arguments,n).reduce(function(prev,cur) { |
用途是将数组扁平化。
例如 1
2
3
4
5
6
7
8
9var a= [
[1, 2],
[3, 4],
[5, 6]
];
var b= a.reduce(function (prev, cur) {
return prev.concat(cur);
});
//b = [1,2,3,4,5,6]