通过 id 查找深度嵌套的对象
Find deeply nested object by id
我需要通过 id 在深度嵌套的对象中查找名称。也许 lodash 会有所帮助?如果我不知道我的数组中会有多少嵌套对象,最干净的方法是什么?
这是示例数组:
let x = [
{
'id': '1',
'name': 'name1',
'children': []
},
{
'id': '2',
'name': 'name2',
'children': [{
'id': '2.1',
'name': 'name2.1',
'children': []
},
{
'id': '2.2',
'name': 'name2.2',
'children': [{
'id': '2.2.1',
'name': 'name2.2.1'
},
{
'id': '2.2.2',
'name': 'name2.2.2'
}
]
}
]
},
{
'id': '3',
'name': 'name3',
'children': [{
'id': '3.1',
'name': 'name3.1',
'children': []
},
{
'id': '3.2',
'name': 'name3.2',
'children': []
}
]
}
];
例如,我的 ID 为“2.2”,我需要它的名称。谢谢
根据您的数据,这里有一个解决方案可以帮助您轻松实现这一目标
function findById(array, id) {
for (const item of array) {
if (item.id === id) return item;
if (item.children?.length) {
const innerResult = findById(item.children, id);
if (innerResult) return innerResult;
}
}
}
const foundItem = findById(x, "2.2");
console.log(foundItem);
/*
The result obtained here is: {id: '2.2', name: 'name2.2', children: Array(2)}
*/
我需要通过 id 在深度嵌套的对象中查找名称。也许 lodash 会有所帮助?如果我不知道我的数组中会有多少嵌套对象,最干净的方法是什么?
这是示例数组:
let x = [
{
'id': '1',
'name': 'name1',
'children': []
},
{
'id': '2',
'name': 'name2',
'children': [{
'id': '2.1',
'name': 'name2.1',
'children': []
},
{
'id': '2.2',
'name': 'name2.2',
'children': [{
'id': '2.2.1',
'name': 'name2.2.1'
},
{
'id': '2.2.2',
'name': 'name2.2.2'
}
]
}
]
},
{
'id': '3',
'name': 'name3',
'children': [{
'id': '3.1',
'name': 'name3.1',
'children': []
},
{
'id': '3.2',
'name': 'name3.2',
'children': []
}
]
}
];
例如,我的 ID 为“2.2”,我需要它的名称。谢谢
根据您的数据,这里有一个解决方案可以帮助您轻松实现这一目标
function findById(array, id) {
for (const item of array) {
if (item.id === id) return item;
if (item.children?.length) {
const innerResult = findById(item.children, id);
if (innerResult) return innerResult;
}
}
}
const foundItem = findById(x, "2.2");
console.log(foundItem);
/*
The result obtained here is: {id: '2.2', name: 'name2.2', children: Array(2)}
*/