1. ホーム
  2. ジャバスクリプト

[解決済み】配列要素の出現回数/頻度を数える

2022-03-30 05:38:39

質問

Javascriptで、数値の初期配列を受け取り、その中の要素を数えようとしています。理想的には、結果は2つの新しい配列になり、最初の配列は各ユニークな要素を指定し、2番目の配列は各要素の出現回数を含むことです。しかし、私は出力のフォーマットに関する提案を歓迎します。

例えば、最初の配列が

5, 5, 5, 2, 2, 2, 2, 2, 9, 4

そして、2つの新しい配列が作成されます。1つ目の配列には、それぞれのユニークな要素の名前が格納されます。

5, 2, 9, 4

2番目には、その要素が最初の配列で何回出現したかが入ります。

3, 5, 1, 1

最初の配列で5という数字が3回出てくるので、2という数字が5回、9と4がともに1回出てきます。

解決策をいろいろと探したのですが、どれもうまくいかず、自分で試したものはすべて、とんでもなく複雑なものになってしまいました。どんなことでもご相談ください。

ありがとうございます :)

解決方法は?

const arr = [2, 2, 5, 2, 2, 2, 4, 5, 5, 9];

function foo (array) {
  let a = [],
    b = [],
    arr = [...array], // clone array so we don't change the original when using .sort()
    prev;

  arr.sort();
  for (let element of arr) {
    if (element !== prev) {
      a.push(element);
      b.push(1);
    }
    else ++b[b.length - 1];
    prev = element;
  }

  return [a, b];
}

const result = foo(arr);
console.log('[' + result[0] + ']','[' + result[1] + ']')
console.log(arr)