Javascript 下划线\减少对象的行为
我有一个关于下划线对对象的reduce行为的问题 鉴于以下目标:Javascript 下划线\减少对象的行为,javascript,underscore.js,Javascript,Underscore.js,我有一个关于下划线对对象的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 },
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
的工作方式。你实际上没有使用u.reduce,你使用的是[]。reduce…@dandavis,不管\uu
是什么,这与手头的问题无关。我喜欢用标题来反映代码。此外,reduce()是什么并不重要;)我真的不喜欢标记为重复的文本“这个问题以前被问过,现在已经有答案了。”
。当然,这些问题都有相似的答案,但之前没有人问过这个问题。哇,我在发布之前检查了Chrome和Firefox。在firebug中查看它,你会发现它正在产生预期的行为。谢谢你的帮助。