如何在JavaScript中通过键从数组中删除元素?

3

我有这个数组:

var myArray = [
                  {first_name: "Oded", last_name: "Taizi", id: 1},
                  {first_name: "Ploni", last_name: "Almoni", id: 2}
                  ];

我想移除id元素,我创建了以下函数,但它不能正常工作。
function removeKeys(array,keys){
 for(var i=0; i<array.length; i++){
    for(var key in array[i]){
        for(var j=0; j<keys.length; j++){
            if(keys[j] == key){
                array[i].splice(j, 1);
            }
        }
    }
 }
}

removeKeys(myArray ,["id"]);

结果数组应该长这样:
[
    {first_name: "Oded", last_name: "Taizi"},
    {first_name: "Ploni", last_name: "Almoni"}
];

你需要使用 delete:delete array[i][key] - Oskar
你正在尝试从一个对象中删除属性,而不是数组。你可以使用delete来完成。 - Pineda
1
如果您想知道如何从这些对象中删除id属性,那么这是一个重复的问题。请参考如何从JavaScript对象中删除属性?的解决方案。 - T.J. Crowder
根据您的编辑,是的,这是与上面链接的问题的重复。我无法使用“重复”工具(我已经投票将其关闭为不清楚)。 - T.J. Crowder
2
可能是如何从JavaScript对象中删除属性?的重复问题。 - Jonast92
抱歉,我没有看到。这里的第一条评论由@Oskar解决了我的问题。 - oded
2个回答

9
请使用以下内容:
myArray.forEach(function(item){ delete item.id });

如果这就是 OP 所问的,我们不需要对 这个问题 再提供 另一个 答案。 - T.J. Crowder
他们现在已经确认了,是的,那就是他们所要求的。 - T.J. Crowder

4
也许可以用数组过滤器来实现:

filteredArray = myArray.filter(item => return (item.id !== id));

这将返回一个不包含匹配元素的新数组。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接