javascript删除对象数组的多个值

Kio*_*iow 3 javascript ecmascript-6

我是javascript的新手,我试图从一个对象数组中删除多个值.

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

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

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

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

Dev*_*gay 14

如果您可以使用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));
Run Code Online (Sandbox Code Playgroud)

这对字符串也同样有用.

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));
Run Code Online (Sandbox Code Playgroud)

该解决方案还具有不可变的附加好处.这意味着您要返回新数据而不是变形旧数据.这被认为是好习惯.

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