繁体   English   中英

javascript删除对象数组的多个值

[英]javascript remove multiple values of array of objects

我是 javascript 新手,我正在尝试从对象数组中删除多个值。

现在我可以像这样删除一个对象

if(obj.findObjectByKey(response, 'cat_id', 171) == true) {
    var catId = response.map(item => item.cat_id).indexOf(171);
}

在上面的代码中,我将删除 ID 为“171”的项目,但现在我有一个包含多个值的数组,我想删除它。

那么如何修改上面的代码,让我传入一个我想从列表中删除的项目数组,例如['171', '172', '173, '174'];

如果您可以使用 ES6,请尝试使用 JavaScript 的过滤器并为此包含

 const nums = [1, 2, 3, 4, 5, 6]; const remove = [1, 2, 4, 6]; function removeFromArray(original, remove) { return original.filter(value => !remove.includes(value)); } console.log(removeFromArray(nums, remove));

这也适用于字符串。

 const nums = ["1", "2", "3", "4", "5", "6"]; const remove = ["1", "2", "4", "6"]; function removeFromArray(original, remove) { return original.filter(value => !remove.includes(value)); } console.log(removeFromArray(nums, remove));

此解决方案还具有不可变的额外好处。 这意味着您正在返回新数据而不是改变旧数据。 这被认为是很好的做法。

https://wecodetheweb.com/2016/02/12/immutable-javascript-using-es6-and-beyond/

 for(const id of ['171', '172', '173', '174']){
    const index = response.findIndex(item => item.cat_id === id);
    if(index !== -1)
        response.splice(index, 1);
 }

您可以简单地迭代您的ID并将其删除。

您只需要遍历该数组,并检查数组元素。

arrayToRemove = ['171', '172', '173', '174'];

for (i = arrayToRemove.length; i>=0; i--) {
   if(obj.findObjectByKey(response, 'cat_id', arrayToRemove[i]) == true) {
       var catId = response.map(item => item.cat_id).indexOf(arrayToRemove[i]);
       response.splice(catId, 1);
   } 
}

还有其他方法可以做到这一点,但这是最快、最直接的方法,对当前代码的更改最少。

重要的是要注意,您应该从数组的末尾循环删除到开头,以便您可以保留剩余数组中其他元素的索引。

var users = [
  { user: 'barney', age: 36, active: true },
  { user: 'fred', age: 40, active: false },
  { user: 'travis', age: 37, active: true },
];
var app = [{ user: 'barney' }, { user: 'fred' }];
_.forEach(app, (v) => {
  users = _.reject(users, { user: v.user });
});
   var userList = [
      { name: 'abhijeet', city: 'pune', id: 1},
      { name: 'rohit', city: 'pune', id: 2},
      { name: 'vicky', city: 'deglur', id: 3},
      { name: 'abhilash', city: 'washim', id: 4},
      { name: 'sumit', city: 'nagpur', id: 5}
    ];

    var removeUsers = [
      { name: 'vicky', city: 'deglur', id: 3},
      { name: 'sumit', city: 'nagpur', id: 5}
    ];

    var idArray = removeUsers.map((user) => user.id);

    userList = userList.filter((item) => {
        return idArray.indexOf(item.id) === -1;
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM