Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 下划线\减少对象的行为_Javascript_Underscore.js - Fatal编程技术网

Javascript 下划线\减少对象的行为

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 },

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