删除 javascript 中的子数组项

Remove Sub Array Item in Javascript

本文关键字:数组 javascript 删除      更新时间:2023-09-26

我将如何从JavaScript/jQuery中id = 2的以下数组中删除整个子数组项?

arr = [{
    "id": 1,
    "name": "Steve"
},{
    "id": 2,
    "name": "Martin"
},{
    "id": 3,
    "name": "Short"
}]

我不确定在这种情况下如何使用grepsplice

我想要的输出是:

newArr = [{
    "id": 1,
    "name": "Steve"
},{
    "id": 3,
    "name": "Short"
}]

尝试在此上下文中使用Array.prototype.filter

var arr = [ {"id":1,"name":"Steve"} , {"id":2,"name":"Martin"} , {"id":3,"name":"Short"} ];
var newArr = arr.filter(function(itm){
  return itm.id !== 2;
});

您可以遍历数组并在找到 id 时使用拼接

var arr = [{"id": 1,"name": "Steve"},{"id": 2,"name": "Martin"},{"id": 3,"name": "Short"}];
for (var i=0; i<arr.length; ++i) {
    if (arr[i].id == 2) {
        arr.splice(i, 1);
    }
}
alert(JSON.stringify(arr));

明确的问题解决方案:

var newArr = arr.filter(function(el) { return el.id!= 2; }); 
console.log(newArr);

这就是我的做法

    var toRemove = "2";
    var toKeep = [];
    var arr = [ {"id":1,"name":"Steve"} , {"id":2,"name":"Martin"} , {"id":3,"name":"Short"} ];
    var listOfItems = JSON.stringify(arr);
    var splitItems = listOfItems.split('},');
    for(var i = 0; i< splitItems.length; i++){
    var details = splitItems[i].split(',');
    if(details[0].split(':')[1] !== toRemove){
    var people = {id:details[0].split(':')[1], name:details[1].split(':')[1].replace('}]', '')};
    toKeep.push(people);
    }

    }
    console.log(toKeep);

就我而言,我想从一个数组中减去另一个数组。因此,从另一个子数组中排除一个子数组,其中项目是复杂对象(例如id字段)。

对于非复杂数组,您可以使用此处的答案:https://stackoverflow.com/a/53092728/2394052

否则,对于更复杂的对象,可以使用:

    const fullArray = [{ id: 1 }, { id: 2 }, { id: 3 }, { id: 4 }];
    const subArray = [{ id: 1 }, { id: 3 }];
    const resultArray = fullArray.filter(
        (x) => !subArray.find((x2) => x.id === x2.id)
    );

所以,这基本上是说,把subArray中不存在的物品还给我