2012-06-05 31 views
2

我有以下的JavaScript數組:在陣列總結出重複的項目

var President = new Array(); 
President[0]="Thomas Jefferson"; 
President[1]="Thomas Jefferson"; 
President[2]="Thomas Jefferson"; 
President[3]="Thomas Jefferson"; 
President[4]="Thomas Jefferson"; 
President[5]="Thomas Jefferson"; 
President[6]="Thomas Jefferson"; 
President[7]="Thomas Jefferson"; 
President[8]="Thomas Jefferson"; 
President[9]="Thomas Jefferson"; 
President[10]="Thomas Jefferson"; 
President[11]="Thomas Jefferson"; 
President[12]="Thomas Jefferson"; 
President[13]="James Madison"; 
President[14]="James Madison"; 
President[15]="James Madison"; 
President[16]="James Madison"; 
President[17]="James Madison"; 
President[18]="James Madison"; 
President[19]="James Madison"; 
President[20]="Abraham Lincoln"; 
President[21]="Abraham Lincoln"; 
President[22]="Abraham Lincoln"; 
President[23]="Abraham Lincoln"; 
President[24]="Abraham Lincoln"; 
President[25]="George Washington"; 

我如何從中總結出重複的項目,以便輸出如下:

Thomas Jefferson: 13 
James Madison: 7 
Abraham Lincoln: 5 
George Washington: 1 

感謝您的幫助!

+0

僅供參考,在發佈問題時,在文本編輯器中有一個「代碼示例」格式按鈕。另外,你到目前爲止嘗試過什麼? –

+1

可能重複的[計數JavaScript數組元素](http://stackoverflow.com/questions/5667888/counting-occurences-of-javascript-array-elements) – j08691

回答

0

我不是一個JavaScript開發,而是基於對JS看起來哈希表this文章像你希望像下面這樣:

var h = new Object(); 
for (var p in President) { 
    if (h.hasItem(p)) { 
     h.setItem(p, h.getItem(p) + 1); 
    } 
    else { 
     h.setItem(p, 1); 
    } 
} 

for (var p in h) 
{ 
    document.write(p); 
    document.write(":"); 
    document.write(h.getItem(p)); 
    document.write("<br />"); 
} 
2

@Tyson:數組不應該使用經過.. in。

for (var stats = {}, potus, i = President.length; i--;) { 
    if (!((potus = President[i]) in stats) 
     stats[potus] = 0; // Initialize a new counter 
    stats[potus]++; 
    } 

    // Now stats['Thomas Jefferson'] will be 13 etc.