首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从对象数组中减去对象数组

从对象数组中减去对象数组
EN

Stack Overflow用户
提问于 2020-07-09 02:27:08
回答 3查看 81关注 0票数 2

我知道类似的问题已经发布,但他们似乎从来没有针对相同的问题。

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

代码语言:javascript
复制
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()条件下以某种方式失败了

代码语言:javascript
复制
      const result = allItems.filter((itemFromAllItems ) => {
                return !itemsToRemove.find( itemToRemove => {
                    return itemFromAllItems.x === itemToRemove.x && itemFromAllItems.y === itemToRemove.y
                })
            })
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-07-09 02:34:11

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

代码语言:javascript
复制
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);

希望这能有所帮助

票数 1
EN

Stack Overflow用户

发布于 2020-07-09 02:56:48

如果你只是想过滤,你可以使用filtersome来获得你想要的数据,但是,如果你想从数组中直接删除对象,你可以使用下面的命令

代码语言:javascript
复制
allItems = [{x:1, y:2}, {x:1, y:1}, {x:4, y:1},{x:4, y:1},{x:4, y:1}]
itemsToRemove = [{x:1, y:2},{x:4, y:1}]
 for(let i=0;i<allItems.length;i++){
   o=allItems[i]
  itemsToRemove.some(v=>{if(o.x==v.x &&o.y==v.y) allItems.splice(i,1),i--})
 }
console.log(allItems)

票数 1
EN

Stack Overflow用户

发布于 2020-07-09 03:15:47

这将获取两个数组,比较这些值,然后生成一个新数组,其中只包含不匹配的结果。

代码语言:javascript
复制
<script>
allItems = [{x:1, y:2}, {x:1, y:1}, {x:4, y:1}];
itemsToRemove = [{x:1, y:2}]
result = [];
for(var i = 0; i < allItems.length; i++){
  for(var j = 0; j < itemsToRemove.length; j++){ 
    if(JSON.stringify(allItems[i]) !== JSON.stringify(itemsToRemove[j])){
      result.push(allItems[i]);
    }
  }
} 
console.log(result);
</script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62801331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档