2012-06-21 4 views
1

나는 자바 스크립트에 선언 된 문자열의 길이가 가변적 인 배열을 가지고 있는데, 여기에는 던전과 드래곤의 클래스 이름이 들어있다. 이것의 예는 다음과 같습니다 : 내 HTML에서자바 스크립트 배열 요약하기

var class_names = new Array("Wizard", "Wizard", "Wizard", "Sorcerer", 
    "Sorcerer", "Ultimate Magus"); 

, 나는 로컬로 표시되는 페이지의 콘텐츠를 구축하는 자바 스크립트 파일에서 다양한 변수를 설정하는 자바 스크립트 window.onload 기능을 사용합니다. 이름 같은 것들에 대한

,이 쉽습니다 :

document.getElementById('charname').innerHTML = name[0]; 

그러나 클래스 정보를 원하시면, 난 그냥 클래스 이름의 대규모 문자열을 펌프 싶지 않아

, 내가 원하는 그것이 아래로 응축.

"마법사 3, 마법사 2, 궁극적 인 동방의 세 박사의 단수형 1"

각 클래스 이름 뒤에 숫자 즉,이이어야한다 'class_names은'위, 나는이처럼 보이는 문자열로 끝날 할 예제를 사용하여 배열에서 발견 된 반복 횟수.

누구나 이런 일이 벌어 지도록하는 방법을 알고 있습니다. 클래스 파일을 class_names에 추가하기 위해 javascript 파일을 변경하면 내 HTML 페이지에 적절하게 표시됩니까?

미리 알려 주셔서 감사합니다.이 애완 동물 프로젝트에 도움을 주셔서 감사합니다. 즉, 캐릭터 시트로 인쇄 할 수있는 캠페인의 각 캐릭터에 대한 HTML 페이지를 만드십시오. 페이지를 직접 작성하는 것보다 훨씬 낫습니다. 각 캐릭터, 또는 바닐라 시트에 필기).

답변

3

충분히 간단합니다. 배열을 반복하여 반복하십시오. 나는 당신의 문제를 해결하는 방법에는 여러 가지가 있다고 생각

var l = class_names.length, i, tmp = {}, ret = []; 
for(i=0; i<l; i++) { 
    if(!tmp[class_names[i]]) tmp[class_names[i]] = 0; 
    tmp[class_names[i]]++; 
} 
for(i in tmp) { 
    if(tmp.hasOwnProperty(i)) { 
     ret.push(i+" "+tmp[i]); 
    } 
} 
// output is ret.join(", "); 
+0

감사합니다. –

0

...

가능성 A : 클래스가 올바른 순서로 표시되어 있는지 알 수없는 경우

  1. 가 시도 배열을 먼저 정렬하여 배열을 올바르게 그룹화합니다.
  2. 배열을 반복하고 반복을 계산합니다. 즉, lastElement === class_names [i] 인 경우 카운터를 늘리고 마지막 클래스 이름에 대한 결과를 결과 문자열에 추가하고 그렇지 않으면 카운터를 1로 다시 설정합니다.

가능성의 B : 스토어에 직접와 같은 배열 [ "마법사", 3, "마법사", 2, ...] - JS가에 요소의 동일한 유형을 포함하는 배열을 필요로하지 않기 때문에이 가능하다 각 위치.

가능성 C : 다른 구조를 사용하십시오. 객체 사용 : var class_names = [{이름 : "마법사", 레벨 : 3}, {이름 : "마법사", 레벨 2} ...