首页 > 解决方案 > 从对象数组中减去对象数组

问题描述

我知道已经发布了类似的问题,但它们似乎从未针对相同的问题。

我想itemsToRemove从第一个数组 ( allItems) 中删除第二个数组 ( ) 中包含的对象。

allItems = [{x:1, y:2}, {x:1, y:1}, {x:4, y:1}]

itemsToRemove = [{x:1, y:2}]

result = [{x:1, y:1}, {x:4, y:1}]

我尝试了很多方法,但它在某种find()情况下失败了

      const result = allItems.filter((itemFromAllItems ) => {
                return !itemsToRemove.find( itemToRemove => {
                    return itemFromAllItems.x === itemToRemove.x && itemFromAllItems.y === itemToRemove.y
                })
            })

标签: javascript

解决方案


假设您的对象只有 x 和 y 值,这将起作用。

var allItems = [{x:1, y:2}, {x:1, y:1}, {x:4, y:1}]

var itemsToRemove = [{x:1, y:2}]

var result = allItems.filter(e => !itemsToRemove.some(s => s.x === e.x && s.y === e.y));

console.log(result);

希望这可以帮助


推荐阅读