javascript - 寻找一种方法来比较和计算数组中所有嵌套对象键/值对

标签 javascript arrays

我有一个对象数组,例如:

const arr1 = [
 {"from":"Monica","to":"Rachel"},
 {"from":"Monica","to":"Rachel"},
 {"from":"Monica","to":"Chandler"},
 {"from":"Monica","to":"Chandler"},
 {"from":"Ross","to":"Chandler"},
 {"from":"Ross","to":"Monica"},
];

我想对两个键(“from”和“to”)相同的所有唯一实例进行排序和计数。

我可以成功地计算出仅比较一个键(“从”或“到”)的每个案例,但我找不到如何比较两者的解决方案。

这是我的示例代码:

let arr2 = Object.values(arr1.reduce((c, { from, to }) => {
 c[from] = c[from] || { from, to, count: 0 };
 c[from].count++;
 return c;
}, {}));
console.log(arr2);

这是我现在得到的结果(因为代码仅比较“from”键):

console.log(arr2);
// Array(2)
// 0: {from: "Monica", to: "Rachel", count: 4}
// 1: {from: "Ross", to: "Chandler", count: 2}
// length: 2

这是我想要实现的结果:

console.log(arr2);
// Array(2)
// 0: {from: "Monica", to: "Rachel", count: 2}
// 1: {from: "Monica", to: "Chandler", count: 2}
// 2: {from: "Ross", to: "Chandler", count: 1}
// 3: {from: "Ross", to: "Monica", count: 1}
// length: 4

最佳答案

  • 使用 Array.reduce,您可以通过 fromto 变量对键对输入数组进行分组。
  • 对于重复项,计数会增加,最后结果将存储在 groupedBy 对象上每个键的值上。
  • 您只能使用 Object.values 提取值。

const arr1 = [
 {"from":"Monica","to":"Rachel"},
 {"from":"Monica","to":"Rachel"},
 {"from":"Monica","to":"Chandler"},
 {"from":"Monica","to":"Chandler"},
 {"from":"Ross","to":"Chandler"},
 {"from":"Ross","to":"Monica"},
];

const groupedBy = arr1.reduce((acc, cur) => {
  const key = `${cur.from}_${cur.to}`;
  acc[key] ? acc[key].count ++ : acc[key] = {
    ...cur,
    count: 1
  };
  return acc;
}, {});
const result = Object.values(groupedBy);
console.log(result);

关于javascript - 寻找一种方法来比较和计算数组中所有嵌套对象键/值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64385902/

相关文章:

c# - array[][] 和 array[,] 有什么区别?

c - Top N 记录排序以仅返回排序数组中特定范围内的数字

c - 中断驱动的 UART 中的流处理 - ATMEGA328P

javascript - 如何在 HighCharts 的点击函数中访问外部范围变量

javascript - 在 ajax 调用中创建的按钮的行为与标准 html 中不同

JavaScript - 计算 2 个日期之间的天数(包括结束日期)?

php - 使用 PHP/jQuery 的 GET 传递数组

arrays - Enterprise Architect 代码生成 - 组合 - membervariable 作为数组

javascript - React 0.13.3 和 React-highcharts 3.0.0 的 Nodata 消息

javascript - 在 Ionic 中的单个 div 中滚动