如何通过id删除数组数组中的对象?
How to delete object in arrays of arrays by id?
const myArrayOfObjects = [
{id: 1, children: [{id: 2, children: [{id: 3}]}]},
{id: 4, children: [{id: 5}]},
{id: 6, children: [{id: 7}]}
]
我有一个包含很多对象的数组,这些对象可以有很多子数组,但每个对象都有唯一的键。那么我如何循环遍历主数组并删除一些对象呢?例如 id 为 3
的对象
您可以使用 indexOf()
找到数组的索引,并使用该索引和 .splice()
删除元素
您的数据结构充满错误。缺少括号、拼写错误等,因此您需要先修复这些问题。您可以使用 JSCompress 之类的工具来指出错误。
使用一个递归函数,它接受一个对象数组和一个 id,遍历数组并检查 id。如果对象id与参数id相同splice
出对象。
然后,如果对象有子对象,则将该数组传回函数并重复该过程。
最后 return 更新数组。
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));
使用递归函数搜索并删除数组中的对象。如果找到元素后子数组为空,则从父对象中删除子 属性。
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);
const myArrayOfObjects = [
{id: 1, children: [{id: 2, children: [{id: 3}]}]},
{id: 4, children: [{id: 5}]},
{id: 6, children: [{id: 7}]}
]
我有一个包含很多对象的数组,这些对象可以有很多子数组,但每个对象都有唯一的键。那么我如何循环遍历主数组并删除一些对象呢?例如 id 为 3
您可以使用 indexOf()
找到数组的索引,并使用该索引和 .splice()
删除元素
您的数据结构充满错误。缺少括号、拼写错误等,因此您需要先修复这些问题。您可以使用 JSCompress 之类的工具来指出错误。
使用一个递归函数,它接受一个对象数组和一个 id,遍历数组并检查 id。如果对象id与参数id相同
splice
出对象。然后,如果对象有子对象,则将该数组传回函数并重复该过程。
最后 return 更新数组。
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));
使用递归函数搜索并删除数组中的对象。如果找到元素后子数组为空,则从父对象中删除子 属性。
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);