const myArrayOfObjects = [
{id: 1, children: [{id: 2, children: [{id: 3}]}]},
{id: 4, children: [{id: 5}]},
{id: 6, children: [{id: 7}]}
]我有很多对象的数组,可以有很多子数组,但是每个对象都有唯一的键。那么,我如何循环遍历主数组并删除某些对象呢?例如,具有id 3的对象
发布于 2022-04-05 10:13:47
splice输出该对象。
const arr=[{id:1,children:[{id:2,children:[{id:3}]}]},{id:4,children:[{id:5}]},{id:6,children:[{id:7,children:[{id:7}]}]}];
function remove(arr, id) {
for (let i = 0; i < arr.length; i++) {
const obj = arr[i];
if (obj.id === id) arr.splice(i, 1);
if (obj.children) remove(obj.children, id);
}
return arr;
}
console.log(remove(arr, 3));
发布于 2022-04-05 09:51:40
可以使用indexOf()查找数组的索引,并将该索引与.splice()一起使用以删除元素。
发布于 2022-04-05 10:32:14
使用递归函数搜索和删除数组中的对象。如果在找到元素后子数组为空,则从父对象中删除子属性。
const arr = [
{id: 1, children: [{id: 2, children: [{id: 3}]}]},
{id: 4, children: [{id: 5}]},
{id: 6, children: [{id: 7, children: [{id: 7}]}]}
];
function findObjectToDelete(array, idToDelete) {
for(let i=0;i<array.length;i++) {
const obj = array[i];
if(obj.id === idToDelete){
array.splice(i,1);
break;
}
if(obj.children) {
findObjectToDelete(obj.children, idToDelete);
if(obj.children.length===0) {
delete obj.children;
}
}
}
return array;
}
const newArr = findObjectToDelete(arr,3);
console.log(newArr);
https://stackoverflow.com/questions/71749590
复制相似问题