はじめに
配列の各要素ごとにカウントする方法について記述していきます。
今回はHashの形でreturnします。
Rubyの場合
簡単です。tally
メソッドを使用します。
arr = ["apple", "banana", "apple", "orange", "banana", "apple"]
tallied = arr.tally
# => {"apple"=>3, "banana"=>2, "orange"=>1}
JSの場合
最も美しいのは、reduce
メソッドを使用しtally
メソッドを再現することだと思います。
function tally(array) {
return array.reduce((acc, item) => {
acc[item] = (acc[item] || 0) + 1;
return acc;
}, {});
}
const arr = ["apple", "banana", "apple", "orange", "banana", "apple"];
const tallied = tally(arr);
// => { apple: 3, banana: 2, orange: 1 }
また、lodash
ライブラリから、countBy
メソッドを使用することができます。
const _ = require('lodash');
const arr = ["apple", "banana", "apple", "orange", "banana", "apple"];
const tallied = _.countBy(arr);
// => { apple: 3, banana: 2, orange: 1 }
これは文字列から文字の出現回数をカウントせよという問題です.
この解答として以下のコードがありました。
const count = require('lodash').countBy;
これで動くんですね。
引数の引き渡しなどがどう処理されているのか、詳しいことはわかりません。
以上、配列の各要素ごとにカウントする方法でした。