【问题标题】:Counting occurrences of arrays of numbers in Javascript在Javascript中计算数字数组的出现次数
【发布时间】:2018-02-12 15:58:04
【问题描述】:

如何计算纯 Javascript 中数字数组的出现次数?像这样的东西(想象有数百到这些数字集):

[2, 5, 66, 199]
[32, 56, 88, 109]
[13, 45, 102, 200]
[2, 5, 66, 199]
[2, 5, 66, 199]
[32, 56, 88, 109]

会给我这样的东西:

2, 5, 66, 199 -> 3 times
32, 56, 88, 109 -> 2 times
13, 45, 102, 200 -> 1 time

【问题讨论】:

  • 听起来像是功课。
  • 它们的顺序总是相同还是[1,2,3]等于[3,2,1]
  • @Jamiec 95% 的时候是的,但它们可能会不按顺序进行
  • protip:95% 的时间也可能是 0% 的时间。即使只有 0.00000001% 的时间,你也必须处理它

标签: javascript arrays object compare


【解决方案1】:

从数组创建字符串并将其用作对象中的键。如果你想要[1, 2] != [2, 1],只需在join 方法之前删除sort

const data = [[2, 5, 66, 199],[32, 56, 88, 109],[13, 45, 102, 200],[2, 5, 66, 199],[2, 5, 66, 199],[32, 56, 88, 109]]
const result = data.reduce((r, e) => {
  const arr = e.sort().join(',');
  r[arr] = (r[arr] || 0) + 1;
  return r;
}, {});

console.log(result)

【讨论】:

  • 谢谢 Nenad,这正是我想要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-18
  • 1970-01-01
  • 2017-10-02
相关资源
最近更新 更多