這是使用reduce
function一個偉大的地方:
的減少()方法應用於對一個儲液器的功能和所述陣列的每一 值(從左到右)具有將其降低到單個值爲。
...
減少一次執行回調函數對於每個本元件中 陣列,不含所述陣列中的孔,容納四個參數: 初始值(或值從以前的回叫呼叫), 當前元素的值,當前索引以及發生迭代的陣列的值。
這將是這個樣子:
var arr = [ { name: 'Suman',
game: '5A'
},
{ name: 'Suman',
game: '5A'
},
{ name: 'Namus',
game: '5A'
},
{ name: 'Namus',
game: '5A'
}
]
var counts = arr.reduce(function(counts, item) {
counts[item.name] = (counts[item.name] || 0) + 1;
return counts;
}, {});
counts
則是:
{ Suman: 2, Namus: 2 }
要求在評論:
如果我想要的合作在對象的數組像 [{name: 'Suman', count:'2'}, {name:'Namus', count:'2'}]
UNT以及名稱。如果你已經有counts
從上面的reduce
電話,那麼你就可以map
其按鍵到你想要的格式:
var countsArray = Object.keys(counts).map(function(name) {
return {name: name, count: counts[name]};
});
countsArray
然後:
[ { name: 'Suman', count: 2 },
{ name: 'Namus', count: 2 } ]
如果我想要計數以及像 [{name:'Suman',count:2},{name:'Namus',count:2}]對象的數組中的名稱 – suman 2014-10-09 19:28:49
@suman我編輯我的回答,並增加了一種方法來做到這一點。 – 2014-10-09 19:43:25
謝謝隊友,我從來沒有明白過映射。你剛剛睜開眼睛。 – suman 2014-10-09 20:00:28