如何删除对象?

时间:2017-09-29 05:25:19

标签: javascript node.js

为什么数组中有未定义的?如何删除对象?

arr = [
  {id:1,name:'aaa'},
  {id:2,name:'bbb'},
  {id:3,name:'ccc'}
];

for(var item in arr){
  if(arr.hasOwnProperty(item)){
    if(arr[item].id === 2){
      delete(arr[item]);
      continue;
    }
  }
}

console.log(arr);

3 个答案:

答案 0 :(得分:2)

希望这是你想要做的: -

var arr = [
  {id:1,name:'aaa'},
  {id:2,name:'bbb'},
  {id:3,name:'ccc'}
];


arr = arr.filter(function(item){
  return item.id != 2;
});

console.log(arr)

答案 1 :(得分:1)

因为delete没有排列索引。从文档

  

删除数组元素时,数组长度不受影响。   即使您删除了数组的最后一个元素

,这也成立

要删除,您需要使用 Array#splice 功能,该功能会按索引删除。首先使用 Array#findIndex 查找索引,然后传递给拼接功能。

arr = [
  {id:1,name:'aaa'},
  {id:2,name:'bbb'},
  {id:3,name:'ccc'}
];

const index = arr.findIndex(item => item.id === 2);
arr.splice(index, 1);
console.log(arr);

答案 2 :(得分:0)

您需要修改delete对象数组。var arr = [{ id: 1, name: 'aaa' }, { id: 2, name: 'bbb' }, { id: 3, name: 'ccc' } ]; // iterating the object arr.forEach(function(item, index) { //checking if id === 2, if it is 2 using splice //method to remove element from that index, & shift by one element if (item.id === 2) { arr.splice(index, 1) } }) console.log(arr);运算符从对象中删除给定属性,在您需要移除对象后移动元素



root
|
|__subfolder1 (includes files)
|
|__subfolder2 (includes files)
|
etc