2017-12-20 5 views
-1

자바 스크립트를 사용하여 문자열의 문자 수 막대 그래프를 만들려고합니다. 지금 나는 문자의 주파수를 표시하는 문자열을 가지고,하지만 난 문자열에 대한 ...과 같이자바 스크립트 히스토그램

EG를 표시 할 노력하고 있어요 안녕하세요 : A : 0 B : 0 C : 0 D : 0 e : 1 f : 0 ...

이것은 내 코드입니다.

class myString { 



    constructor(text) { 
    this.text = text.toLowerCase(); 
    this.text = this.text.replace(/\s/g, ''); 
    } 


    getFrequency() { 

    let string = this.text 
    var letters = {}; 
    for (var i=0; i<string.length;i++) { 
     var character = string.charAt(i); 
     if (letters[character]) { 
      letters[character]++; 
     } else { 
      letters[character] = 1; 
     } 
    } 
    return letters; 
}; 

    Histogram(){ 

     var stringBase = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']; 

     var letters = this.getFrequency(); 

     console.log(letters); 

    } 


} 

내 코드를 콘솔에 인쇄하고 싶습니다.

desired result

+2

문제는 무엇입니까? "디스플레이"란 정확히 무엇을 의미합니까? – Pointy

+0

콘솔에 인쇄합니다. – GurdevSingh

답변

1

반복 처리를 letters에서 stringBaseArray#map으로, 그리고 걸릴 계산됩니다. 문자에 대해 카운트가 존재하지 않으면 대신 0을 사용하십시오. Array#assignarray spread을 사용하여 객체 배열을 단일 객체로 병합합니다.

class myString { 
 
    constructor(text) { 
 
    this.text = text.toLowerCase(); 
 
    this.text = this.text.replace(/\s/g, ''); 
 
    } 
 
    
 
    getFrequency() { 
 
    const string = this.text; 
 
    const letters = {}; 
 
    for(let i = 0; i < string.length; i++) { 
 
     const character = string.charAt(i); 
 
     if (letters[character]) { 
 
     letters[character]++; 
 
     } else { 
 
     letters[character] = 1; 
 
     } 
 
    } 
 
    return letters; 
 
    }; 
 

 
    Histogram() { 
 
    const stringBase = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; 
 

 
    const letters = this.getFrequency(); 
 

 
    return Object.assign({}, ...stringBase.map((l) => ({ 
 
     [l]: '*'.repeat(letters[l] || 0) 
 
    }))); 
 
    
 
    /** to display in the console directly 
 
    console.log(Object.assign({}, ...stringBase.map((l) => ({ 
 
     [l]: '*'.repeat(letters[l] || 0) 
 
    })))); 
 
    **/ 
 
    } 
 
} 
 

 
const str = new myString('hello'); 
 

 
console.log(str.Histogram());

+0

콘솔에이 코드를 추가하고 있습니다. – GurdevSingh

+0

@ GurdevSingh - 콘솔에 표시되는 문자열을 반환합니다. 콘솔을 직접 변경하기 위해 필요한 내용에 대한 설명을 추가하겠습니다. –

+0

하지만 히스토그램 기능에서 console.log와 함께 사용해야합니다. – GurdevSingh