我有一個關於下劃線的減少行爲與對象的問題。下劃線_.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