2017-12-20 3 views
-1

JavaScriptの文字列の文字数のヒストグラムを作成しようとしています。 :0 B:0 C:0 D:今、文字列のためのJavascriptヒストグラム

EGこんにちは..私は文字の周波数を表示する文字列を持っているが、私はそうのようにそれを表示しようとしています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

Array#mapstringBaseを反復処理し、lettersからカウントを取ります。文字の数が存在しない場合は、代わりに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