我是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'];
答案 0 :(得分:11)
如果您可以使用ES6,请尝试使用JavaScript的filter和includes。
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/
答案 1 :(得分:0)
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并将其删除。
答案 2 :(得分:0)
您只需要遍历该数组,并检查数组元素。
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);
}
}
还有其他方法可以做到这一点,但这是最快,最直接的,对当前代码的更改最少。
重要的是要注意,你应该从数组的末尾循环这个以删除到开头,这样你就可以保留其余数组中其他元素的索引。
答案 3 :(得分:0)
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 });
});
答案 4 :(得分:0)
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;
});