从数组中查找并删除具有相同 属性 的对象
Find and Remove Objects from Array with Identical Property
我有两个对象数组,一个大约有。 1800 件物品,第二件大约有 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)
}
}
}
您可以将小数组中的所有 ID 映射为 Array.prototype.map()
:
const idsFilter = smallArray.map(item => item.ID);
然后你可以使用它从大数组中过滤掉 ID 包含在 idsFilter
中的项目,使用 Array.prototype.filter()
:
const filteredLargeArray = largeArray.filter(item => !idsFilter.includes(item.ID));
我有两个对象数组,一个大约有。 1800 件物品,第二件大约有 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)
}
}
}
您可以将小数组中的所有 ID 映射为 Array.prototype.map()
:
const idsFilter = smallArray.map(item => item.ID);
然后你可以使用它从大数组中过滤掉 ID 包含在 idsFilter
中的项目,使用 Array.prototype.filter()
:
const filteredLargeArray = largeArray.filter(item => !idsFilter.includes(item.ID));