Javascriptで指定した文字列の中にある文字がその文字列で何パーセント含まれるかを出力したいのですが何か良い方法はないでしょうか?
javascript
1 2(例) 3var str = "aaaabbbbccccddddeeee" 4 5a : 20% 6b : 20% 7c : 20% 8d : 20% 9e : 20% 10 11//上記のような結果にしたいです 12
どなたかご教授の方お願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
書きましたが、まずは自分でコードを考えて書いてみる事が大切だと思います。
JavaScript
1var string = 'aaaabbbbccccddddeeee'; 2console.log(string.match(/a/g).length / string.length * 100 + '%'); // 20%
質問では方法を尋ねていますが、方法の回答を貰ったらあなたは自分でコードを書けますか?
書けるのなら自分で分かっている範囲だけでもコードを書いて、分からない箇所を具体的に書きましょう。
Re: hatsuhatsu さん
投稿2017/04/22 11:54
編集2017/04/22 12:01総合スコア18166
0
js
1const str = "dbbcccceddeaadbaabee"; 2const res = str 3 .split("") 4 .sort() 5 .join("") 6 .match(/(.)\1*/g) 7 .reduce((map, x)=> map.set(x[0], x.length), new Map()); 8 9for(const [char, length] of res.entries()){ 10 console.log(`${char}: ${(length/str.length)*100}%`); 11}
※サロゲートペアが絡んでくると話が変わってきます。そういう文字が含まれない想定で実装をしています。
投稿2017/04/22 14:48
編集2017/10/25 13:45総合スコア103
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
JavaScript
1let str_array = "dbbcccceddeaadbaabee".split( '' ).sort(); 2const count = str_array.length; 3let res = str_array.reduce( function( prev, curr, i, arr ) { 4 if ( !prev[ curr ] ) { prev[ curr ] = 0; } 5 prev[ curr ]++; 6 return prev; 7}, {} ); 8console.log( Object.keys( res ) ); 9 10Object.keys( res ).forEach( function( key ) { 11 console.log( key, res[ key ] / count * 100 + '%' ); 12} ); 13```**動くサンプル:**[https://jsfiddle.net/mcf40mLt/](https://jsfiddle.net/mcf40mLt/)
投稿2017/04/22 12:18
総合スコア69416
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
自己解決
js
1var str = "Hey are you"; 2var strNew = str.replace(/\s+/g, ""); 3var strNum = strNew.length; 4var m = new Map(); 5 6for(var i = 0; i < strNew.length; i++){ 7 var val = strNew[i]; 8 regexp = new RegExp(val + '(.*?)', 'g'); 9 m.set(val, Math.floor((strNew.match(regexp).length / strNum) *100) + "%") 10 11} 12console.log(m);//下記のような結果を出力することができました 13 14Map { 15 'H' => '11%', 16 'e' => '22%', 17 'y' => '22%', 18 'a' => '11%', 19 'r' => '11%', 20 'o' => '11%', 21 'u' => '11%' 22}
投稿2017/04/23 12:22
総合スコア14
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/22 12:06
2017/04/23 02:50
2017/04/23 12:28