【发布时间】: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