javascript - 获取对象数组中重复对象的列表

标签 javascript arrays typescript ecmascript-6 lodash

我正在尝试获取对象数组中的重复对象。假设对象如下所示。

values = [
  { id: 10, name: 'someName1' },
  { id: 10, name: 'someName2' },
  { id: 11, name: 'someName3' },
  { id: 12, name: 'someName4' }
];

重复的对象应该像下面这样返回:

duplicate = [
  { id: 10, name: 'someName1' },
  { id: 10, name: 'someName2' }
];

最佳答案

您可以使用 Array#reduce根据 id 键制作一个计数器查找表,然后使用 Array#filter删除在查找表中只出现一次的任何项目。时间复杂度为 O(n)。

const values = [{id: 10, name: 'someName1'}, {id: 10, name: 'someName2'}, {id: 11, name:'someName3'}, {id: 12, name: 'someName4'}];

const lookup = values.reduce((a, e) => {
  a[e.id] = ++a[e.id] || 0;
  return a;
}, {});

console.log(values.filter(e => lookup[e.id]));

关于javascript - 获取对象数组中重复对象的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53212020/

相关文章:

javascript - Webpack vs webpack-dev-server vs webpack-dev-middleware vs webpack-hot-middleware vs etc

javascript - Node JS + Express JS : What is routes/index. js 及其用途?

javascript - Angular 2 ionic 形式

reactjs - 使用 TypeScript 进行 react : passing a number variable to a child component

typescript - 如何告诉 Typescript 从一个不太严格的接口(interface)转换到一个更严格的接口(interface)是可以的?

javascript - 如何在 thymeleaf 和 javascript 代码中转义单引号

javascript - 如何在node.js ejs模板中将变量从后端传递到前端

java - 在for循环中设置数组内容

python - 从另一个数组更新 numpy 二维数组索引

Java:带有涉及数组的方法的 Switch 语句