以下.reduce()
方法取自this SO answer,包含许多参数(通常称为解构对象)。
这些参数代表什么功能?
let {result} = array.reduce(({arg_1, arg_2, arg_3}, arg_4)=> {
}, {result: [], arg_2: 0, arg_3: undefined})
return result
答案 0 :(得分:2)
如果OP偶然发现了解构表示法,对于给定的示例,第一个参数是初始值(用前两个注释的provided links描述),作为收集器或累加器对象。它由另一种方法的前三个参数组成。结果由解构赋值写入,因此,将有3个变量arg_1
,arg_2
和arg_3
派生自最终返回的收集器对象的同名参数。
编辑,因为OP提供的示例代码已更改...
下一个示例将OP的链接SO代码引用考虑在内......
let {slots} = array.reduce(({slots, count, prev}, item)=> {
// ... do something with slots
// ...
// while iterating always needs to return
// an equally structured collector object
return {slots, count: count + 1, prev: item}
}, {slots: [], count: 0, prev: undefined})
/*
return slots; // does not really make sense within this shortened example's context.
*/
......等于......
var slots = array.reduce(function (collector, item) {
var
slots = collector.slots,
count = collector.count,
prev = collector.prev;
// ... do something with slots
// ...
// while iterating always needs to return
// an equally structured collector object
return {slots: slots, count: count + 1, prev: item};
}, {slots: [], count: 0, prev: undefined}).slots;
答案 1 :(得分:2)
reduce方法接受两个参数。
语法:
arr.reduce(callback [,initialValue])
因此,在您的示例中,回调用作第一个参数arrow function。让我们打破它:
1. ({arg_1, arg_2, arg_3}, arg_4)=> {} //the callback
2. {arg_1: [], arg_2: 0, arg_3: undefined} // the initial value
并且({arg_1, arg_2, arg_3}, arg_4)
具有<{3}}的两个参数,首先声明为对象。
您可能会注意到arg_4
的初始值缺失。
答案 2 :(得分:1)
Array.reduce需要2个参数,
Array.reduce的回调获得了4个参数:
previousValue
的值在循环开始时为initialValue
。如果未传递任何值,第一个元素将被视为previousValue
而currentValue
将具有下一个值。从它们开始,previousValue
将保存上一次迭代中返回的值。
var a = [1,2,4,4,5,6,7,8];
a.reduce(function(p,c,i,a){
console.log(p,c,i,a);
return c
})
&#13;
var a = [1,2,4,4,5,6,7,8];
a.reduce(function(p,c,i,a){
console.log(p,c,i,a);
return c
},0)
&#13;