可能重複:
array_count_values for javascript instead的JavaScript集團通過陣列
比方說,我有簡單的JavaScript數組如下所示:
var array = ['Car', 'Car', 'Truck', 'Boat', 'Truck'];
我想組的數每一個,所以我會期望一個鍵/值的地圖:
個{
Car : 2,
Truck : 2,
Boat : 1
}
可能重複:
array_count_values for javascript instead的JavaScript集團通過陣列
比方說,我有簡單的JavaScript數組如下所示:
var array = ['Car', 'Car', 'Truck', 'Boat', 'Truck'];
我想組的數每一個,所以我會期望一個鍵/值的地圖:
個{
Car : 2,
Truck : 2,
Boat : 1
}
var arr = [ 'Car', 'Car', 'Truck', 'Boat', 'Truck' ];
var hist = {};
arr.map(function (a) { if (a in hist) hist[a] ++; else hist[a] = 1; });
console.log(hist);
結果
{ Car: 2, Truck: 2, Boat: 1 }
這工作,也:
hist = arr.reduce(function (prev, item) {
if (item in prev) prev[item] ++;
else prev[item] = 1;
return prev;
}, {});
第一種解決方案不適用於與變量名稱(如GUID或整數)不兼容的值,雖然它很棒 –
根據https://developer.mozilla.org/en-US/docs/Web/ JavaScript/Reference/Global_Objects/Array/map map會創建數組的副本。在你的情況下,你甚至沒有使用該副本,所以它會更好地做到這一點:arr.forEach(function(a){if(a in hist)hist [a] ++; else hist [a] = 1;}),因爲forEach不會創建新副本 – pretobomba
如果您使用的是Undescore,而不是'arr.reduce',您還可以嘗試_.countBy(list,iterator)http://underscorejs.org/#countBy – Ande
您可以通過各指標環,並將其保存在一本字典,並增加它時,每一個鍵被發現。
count = {};
for(a in array){
if(count[array[a]])count[array[a]]++;
else count[array[a]]=1;
}
輸出將是:
Boat: 1
Car: 2
Truck: 2
你嘗試過的東西,不工作? – haynar
我不認爲這是重複的。這個問題遠比Php的問題通用。 –
我不認爲這是重複的。我正在尋找關於Javascript的問題和回答,我不會理解其他只列出PHP代碼的問題。 – Ande