使用ArrayObject.reducer()的javascript中的groupby

使用ArrayObject.reducer()的javascript中的groupby,javascript,reduce,Javascript,Reduce,我在这里找到了以下代码: 我想知道是否可以解释一下为什么我们需要reduce函数中的第二个{}?将结果放入的对象是否为空 var _groupBy = function(objectArray, property) { return objectArray.reduce(function (acc, obj) { var key = obj[property]; if (!acc[key]) { acc[key] = [];

我在这里找到了以下代码:

我想知道是否可以解释一下为什么我们需要reduce函数中的第二个{}?将结果放入的对象是否为空

var _groupBy = function(objectArray, property) {
    return objectArray.reduce(function (acc, obj) {
        var key = obj[property];
        if (!acc[key]) {
          acc[key] = [];
        }
        acc[key].push(obj);
        return acc;
    }, {});
};

reduce的第二个论点是你的出发点。它将是函数中
acc
参数的值,在处理的第一次迭代中作为reduce的第一个参数传入

{}
是您发布的链接--
arr.reduce(回调[,initialValue])
中提到的
initialValue
。这是
acc
的第一个值,然后
acc
是返回的值。哦,我明白了-对于ObjectArray上的每个obj,一旦返回acc,它将被添加到{}??有意思。。使用reduce最具挑战性的部分是记住在第一个函数中返回一些东西。调试这些东西有时会很烦人