为什么数组中有未定义的?如何删除对象?
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);
答案 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