微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从数组中查找和删除具有相同属性的对象

如何解决从数组中查找和删除具有相同属性的对象

我有两个对象数组,一个大约有。 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));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。