如何通过ID从JavaScript对象中删除一个元素?例如,我必须删除004或007:
const obj = {
id: '001',
children: [
{
id: '002',
children: [
{
id: '003',
children: [],
},
{
id: '004',
children: [
{
id: '005',
children: [],
}
],
}
],
},
{
id: '006',
children: [
{
id: '007',
children: [],
}
],
},
]
}
我试着喜欢这个,找到id但下一步应该是什么。预计会从对象中删除id。
const removeById = (obj = {}, id = '') => {
console.log('obj: ', obj)
const search = obj.children.find(o => o.id === id)
console.log('##search: ', search)
if(search) {
console.log('## parent id: ', obj.id)
...
}
if (obj.children && obj.children.length > 0) {
obj.children.forEach(el => removeById(el, id));
}
}
removeById(obj, '007')
2条答案
按热度按时间klr1opcd1#
你可以使用findIndex来获取数组中的位置。要从数组中删除一个元素,你需要使用splice。
然后你可以用some循环遍历子节点,并检查子节点的子节点。使用some,你可以在找到id时退出,这样你就不必继续循环了。
ct2axkht2#
我们可以使用递归函数来实现
更新:删除后不保留空对象