小编典典

计算数组元素的出现/频率

all

在 Javascript
中,我试图获取一个初始的数值数组并计算其中的元素。理想情况下,结果将是两个新数组,第一个指定每个唯一元素,第二个包含每个元素出现的次数。但是,我愿意接受有关输出格式的建议。

例如,如果初始数组是:

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

然后将创建两个新数组。第一个将包含每个唯一元素的名称:

5, 2, 9, 4

第二个将包含该元素在初始数组中出现的次数:

3, 5, 1, 1

因为数字 5 在初始数组中出现了 3 次,所以数字 2 出现了 5 次,而 9 和 4 都出现了一次。

我已经搜索了很多解决方案,但似乎没有任何效果,而且我自己尝试过的一切都变得异常复杂。任何帮助,将不胜感激!

谢谢 :)


阅读 108

收藏
2022-04-19

共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)
2022-04-19