使用对象下划线_.reduce行为

时间:2014-09-02 20:37:13

标签: javascript underscore.js

我有一个关于下划线减少对象行为的问题。

给出以下对象:

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)为什么所有独特类型似乎都是从第一次迭代中找到的?

任何帮助都将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:1)

您的代码没有问题。

问题是,在单击小三角形以展开该对象之前,控制台不会自动展开对象。它向您显示对象的截断引用,在展开对象之前,它不会变为现实。

要查看此内容,请查看以下系列屏幕​​截图:

我设置了对象:http://i.imgur.com/nTU3Ld0.png

然后我从第一个输出扩展控制台:http://i.imgur.com/NCCpgfd.png