2017-05-14 4 views
0

の数をオブジェクトに。 numOfOccurances( 'これは大きい')=> {T:2、時間:1、I:2、S:2、G 1、R 1、E:1:1}変換文字列は、私はこれを行うための関数を記述しようとしていoccurances

function numOfOccurances(string) { 
    const stringLower = string.replace(/ /g, '').toLocaleLowerCase(); 
    const counts = {}; 
    let ch; 
    let count; 
    let i; 

    for (i = 0; i < stringLower.length; i++) { 
    ch = stringLower.charAt(i); 
    count = counts[ch]; 
    counts[ch] = count ? count + 1: 1; 
    } 
    console.log(stringLower); 
    console.log(counts); 
} 

(私は出力を見ることができるので、現在はコンソールを出力しています)。

私が手出力は次のようになります。

Object {t: 2, h: 1, i: 2, s: 2, g: 1…} 
a:1 
e:1 
g:1 
h:1 
i:2 
r:1 
s:2 
t:2 
+0

問題点は何ですか? – jswaldon

+0

ええ、あなたの質問は何ですか? – mertyildiran

+0

{t:2、h:1、i:2、s:2、g:1、r:1、e:1、a:1}ではありません。 。それはgで止まるようです(またはこれはコンソールですか?)そして、特別な順序でリターン文字を再び追加してください... – MaxES

答えて

0

のアレイ上の簡単なreduceを行うことができます結果。私は同じことをchrome devtoolsで手に入れました。

Object {t: 2, h: 1, i: 2, s: 2, g: 1…}多くのプロパティを持つオブジェクトは短縮され、省略記号になります。これで、オブジェクトをクリックして展開し、プロパティの完全なリストを表示することができます。

+1

ありがとう、コナン、便利です。展開すると、配列全体が垂直方向とアルファベット順に表示されることに気づきました。 – MaxES

+0

あなたは大歓迎です! –

1

あなたが期待するべきで取得しているどのような文字

const toLowerCase = str => 
 
    str.toLowerCase() 
 

 
const numOccurrences = str => 
 
    Array.from(str, toLowerCase).reduce((acc, c) => 
 
    Object.assign(acc, { [c]: c in acc ? acc[c] + 1 : 1 }), {}) 
 
    
 
console.log(numOccurrences('This is great')) 
 
// { t: 2, h: 1, i: 2, s: 2, ' ': 2, g: 1, r: 1, e: 1, a: 1 }

+0

素晴らしいですが、私も ''を削除する必要があります。しかし、私はそれを行うために世界的な取り替えを行うことができます。おかげで、 – MaxES

関連する問題