【问题标题】:how to remove duplicate objects from an Array of objects but with two unique keys [duplicate]如何从对象数组中删除重复对象但具有两个唯一键[重复]
【发布时间】:2020-10-17 09:44:10
【问题描述】:

所以我有一个对象数组,我正在尝试删除重复项。例如,假设我的对象数组包含以下数据:

[{TERM_CD: "220181", CRS_SUBJ_CD: "LALS", CRS_SUBJ_DESC: "Latin American &Latino Studies", CRS_NBR: "127", CRS_TITLE: "Latin American Music", …}, 
{TERM_CD: "220101", CRS_SUBJ_CD: "MUS", CRS_SUBJ_DESC: "Music", CRS_NBR: "127", CRS_TITLE: "Latin American Music", …}, etc...]

这是我用来删除重复项的 removeDup 函数:

removeDup(data, key) {
    return [
      ...new Map(
        data.map(x=>[key(x), x])
      ).values(),
    ];
  }

例如,如果我像这样调用 remove dup 函数,那么其中一个对象将被删除,因为它们都具有相同的 crs_title。

const noDupArr = this.removeDup(printArr, x => x.CRS_TITLE);

所以我的目标是尝试删除 2 个键 CRS_SUBJ_CD 和 CRS_NBR 上的重复项,但我无法弄清楚如何继续执行此操作。我尝试在 removeDup 函数中添加另一个关键参数,但没有成功。有关解决此问题的任何想法。提前谢谢!

【问题讨论】:

  • 我的目标是尝试删除 2 个键 CRS_SUBJ_CD 和 CRS_NBR 上的重复项。如果您的 removeDup 函数正在运行,那么为什么不使用要删除的其他键调用它两次
  • 调用两次并不能真正解决问题,因为它会删除某些不应删除的对象。
  • 你可以考虑使用 Map ,其中 title 是 key,full obj 是 value。如果它已经存在,不要添加 else 添加。
  • @Henrique Viana 有效!之前没看问题。谢谢!

标签: javascript arrays reactjs duplicates


【解决方案1】:

您可以维护一个keys 数组进行过滤,然后使用Map 来获取唯一值。这是一个重复数据的例子:

var data=[{TERM_CD: "220181", CRS_SUBJ_CD: "LALS", CRS_SUBJ_DESC: "Latin American &Latino Studies", CRS_NBR: "127", CRS_TITLE: "Latin American Music"},
{TERM_CD: "220101", CRS_SUBJ_CD: "MUS", CRS_SUBJ_DESC: "Music", CRS_NBR: "127", CRS_TITLE: "Latin American Music"},{TERM_CD: "220101", CRS_SUBJ_CD: "MUS", CRS_SUBJ_DESC: "Music", CRS_NBR: "127", CRS_TITLE: "Latin American Music"}];

var keys = ['CRS_SUBJ_CD',  'CRS_NBR'];

var result = [...new Map(data.map(p=>[keys.map(k=>p[k]).join('|'),p])).values()];

console.log(result);

我希望这会有所帮助。谢谢!

【讨论】:

  • 误报:{CRS_SUBJ_CD:"foo", CRS_NBR:"bar"}{CRS_SUBJ_CD:"foo|bar", CRS_NBR:""}{CRS_SUBJ_CD:"foo ", CRS_NBR:"|bar"}{CRS_SUBJ_CD:"foo |", CRS_NBR:"bar"}
猜你喜欢
  • 2021-12-23
  • 2021-10-26
  • 1970-01-01
  • 1970-01-01
  • 2018-11-14
  • 2022-01-19
  • 1970-01-01
  • 2022-12-05
  • 1970-01-01
相关资源
最近更新 更多