首页 > 解决方案 > 如何从javascript中的数组中删除对象?

问题描述

我有两个数组totalArray,并且selectionArray这些值总是动态的,但例如我在该数组下面给出的目的,现在我想selectionArraytotalArray使用 id 而不是索引中删除,因为我每页只有五个值。因此,如果我使用索引删除值,那么它也会从其他页面中删除值,因为页面索引是相同的。那么如何使用 id 删除对象呢?我使用拼接,但正在使用其他方法或任何其他可用的解决方案?

  totalArray = [
     {id: 1, city: 'LONDON'},
     {id: 2, city: 'PARIS'},
     {id: 3, city: 'NEW YORK'},
     {id: 4, city: 'BERLIN'},
     {id: 5, city: 'MADRID'},
     {id: 6, city: 'ROME'},
     {id: 7, city: 'DUBLIN'},
     {id: 8, city: 'ATHENS'},
     {id: 9, city: 'ANKARA'},
     {id: 10, city: 'MOSCOW'},
  ]      

   selectionArray = [
     {id: 6, city: 'ROME'},
     {id: 7, city: 'DUBLIN'},
     {id: 8, city: 'ATHENS'},
     {id: 9, city: 'ANKARA'},
     {id: 10, city: 'MOSCOW'},
  ]

  selectionArray.forEach((item, i) => { 
      totalArray.splice(item.id, 1);
  });

标签: javascriptarrays

解决方案


假设您要更改原始数组,以下是遵循此方法的解决方案:

  • 获取id循环项 selectionArray 的 ,利用array.forEach.
  • 在整个数组中查找与循环元素具有相同索引的元素。
  • 获取其索引,并拼接数组中的元素。

这应该与您尝试使用代码实现的目标非常相似,我已尝试尽可能接近您的尝试。

const totalArray = [
     {id: 1, city: 'LONDON'},
     {id: 2, city: 'PARIS'},
     {id: 3, city: 'NEW YORK'},
     {id: 4, city: 'BERLIN'},
     {id: 5, city: 'MADRID'},
     {id: 6, city: 'ROME'},
     {id: 7, city: 'DUBLIN'},
     {id: 8, city: 'ATHENS'},
     {id: 9, city: 'ANKARA'},
     {id: 10, city: 'MOSCOW'},
  ],   
  selectionArray = [
     {id: 6, city: 'ROME'},
     {id: 7, city: 'DUBLIN'},
     {id: 8, city: 'ATHENS'},
     {id: 9, city: 'ANKARA'},
     {id: 10, city: 'MOSCOW'},
  ];

selectionArray.forEach(({id: uid}) => {
  totalArray.splice(
    totalArray.indexOf(totalArray.find(({id}) => uid === id)),
    1
  );
});
console.log(totalArray);

请注意,如果两个数组元素来自同一个数组源,您可以简单地使用indexOf.


推荐阅读