从具有相同特性的阵列中查找和删除对象



我有两个对象数组,一个大约有1800个项目,第二个大约有600个项目。每个数组中的数据示例:

let exampleArray = [{ID:X2346,NAME:"someName"},{ID:X8847,NAME:"someName2"},...]

我需要比较这两个数组,如果大数组中某个对象的"ID"值等于小数组中某一对象的ID值,则从大数组中完全删除该对象,或者根据属性"ID"只保留大数组中不存在的对象。

我已经使用两个嵌套的for循环完成了这项工作,它很有效,但我正在努力提高速度。我读过哈希表,但我认为它不适用于这种情况,或者我不完全了解如何使用它们。有没有更快的方法来实现我的目标?

for (let x=0;x<largeArray.length;x++){
for (let y=0;y<smallerArray.length;y++){
if(largeArray[x]['ID']===smallerArray[y]['ID']){
largeArray.splice(x,1)
}
}
}

您可以使用Array.prototype.map():映射小数组中的所有ID

const idsFilter = smallArray.map(item => item.ID);

然后可以使用它从大数组中筛选出ID包含在idsFilter中的项目,使用Array.prototype.filter():

const filteredLargeArray = largeArray.filter(item => !idsFilter.includes(item.ID));

最新更新