计算元素出现在数组中的次数

时间:2018-11-22 19:49:32

标签: javascript arrays count

输入:任意数组

输出:唯一元素及其数量

到目前为止,我已经能够找到唯一元素,但是我无法弄清楚如何将它们与每个元素的计数相关联。有什么建议(可能的话不使用功能-刚开始但尚未使用功能)?

var arr = [3, 4, 4, 3, 3];
var new_arr = [];
for (i = 0; i < arr.length; i++) {
  if (new_arr.includes(arr[i])) {
    // pass
  } else {
    new_arr.push(arr[i]);
  }
}
console.log(new_arr);

1 个答案:

答案 0 :(得分:1)

使用对象而不是数组来跟踪计数。 key是有问题的数字,而其value是计数。

使用Array#reduce

const res = [3, 4, 4, 3, 3].reduce((acc,cur)=>{
  
  if(acc[cur]) acc[cur]++;
  else acc[cur] = 1;
  return acc;

}, {});

console.log(res);

或者没有任何方法:

var arr = [3, 4, 4, 3, 3];
var new_arr = {};
for (i = 0; i < arr.length; i++) {
  if (new_arr[arr[i]]) {
    new_arr[arr[i]]++;
  } else {
    new_arr[arr[i]] = 1;
  }
}
console.log(new_arr);