我有一个关于下划线的减少行为与对象的问题。下划线_.reduce行为与对象
假定下列对象:
var data = [ { type: "A", val: 2 },
{ type: "B", val: 3 },
{ type: "R", val: 3 },
{ type: "L", val: 3 },
{ type: "R", val: 3 },
{ type: "A", val: 1 },
{ type: "B", val: 5 } ];
和以下功能:
output = _(data).reduce(function(mem, d) {
console.log(mem);
mem[d.type] = d.type;
return mem
}, {});
在控制台的输出为所有8次迭代是:
Object { A: "A", B: "B", R: "R", L: "L" }
1)为什么发生这种情况时,不应该让第一个输出为空,因为我已经将它作为我的初始状态了吗?
2)为什么所有的独特类型似乎都是从第一次迭代中找到的?
任何帮助,将不胜感激,谢谢。
你登录的对象然后在下一次迭代中更改它;这是对象在浏览器中登录的方式的问题,而不是“reduce”的工作方式。 – Mathletics 2014-09-02 20:40:43
你实际上并没有使用_.reduce,你正在使用[] .reduce ... – dandavis 2014-09-02 20:41:11
@dandavis,不管是什么'_',这与手边的问题无关。 – 2014-09-02 20:44:54