2012-06-05 5 views
2

나는 다음과 같은 자바 스크립트 배열을 가지고 :탈리까지 반복 항목

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

당신이 뭔가를 원하는 것처럼 내가 보이는 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.