3
4

配列の各要素ごとにカウントする方法【Ruby JS】

Posted at

はじめに

配列の各要素ごとにカウントする方法について記述していきます。

今回は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;

これで動くんですね。

引数の引き渡しなどがどう処理されているのか、詳しいことはわかりません。


以上、配列の各要素ごとにカウントする方法でした。

3
4
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4