【问题标题】:Counting array objects and creating a key/value pair as an output [duplicate]计算数组对象并创建一个键/值对作为输出[重复]
【发布时间】:2019-06-28 16:38:24
【问题描述】:

如何计算 javascript 数组中某个对象的出现次数,然后将其与该对象相关联。例如: 如果我的数组是:[4,5,5,4,5,3,3,5,4,3] 我将如何获得一个键/值对来计算对象发生的次数,以及它是什么对象。所以我正在寻找的输出是:{3:3, 4:3, 5:4} 意思是 3 出现了 3 次,4 出现了 3 次,5 出现了 4 次。

【问题讨论】:

标签: javascript


【解决方案1】:

您可以使用Array.prototype.reduce() 来遍历数组。函数中的累加器将是一个普通对象{},在每次迭代中,您只需检查数组的项是否是对象中的键:

  • 如果不是,则创建一个新密钥并将其计数为 1
  • 如果是,则访问预先存在的密钥并将其计数增加 1

const arr = [4,5,5,4,5,3,3,5,4,3];

const keyedArr = arr.reduce((accumulator, currentValue) => {
  const key = currentValue.toString();
  if (!(key in accumulator))
    accumulator[key] = 1;
  else
    accumulator[key] += 1;
    
  return accumulator;
}, {});
console.log(keyedArr);

【讨论】:

    【解决方案2】:

    您可以使用reduce 简洁地完成此操作:

    const input = [4,5,5,4,5,3,3,5,4,3];
    
    const output = input.reduce((accum, x) => {
      accum[x] = accum[x] ? accum[x] + 1 : 1;
      return accum;
    }, {});
    
    console.log(output);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-22
      • 1970-01-01
      • 2018-02-13
      • 2023-01-08
      • 2011-10-18
      • 2020-06-29
      • 2021-12-07
      • 2018-07-24
      相关资源
      最近更新 更多