使用递归可以不受数组层级限制,减少代码量。
使用find 方法减少数组循环次数。
数组格式:
let a = [
{
id: 2,
hasChildren: true,
children: [
{
id: 5,
hasChildren: true,
children: [
{
id: 3,
hasChildren: false,
},
{
id: 4,
hasChildren: false,
},
],
},
],
},
];
方法:
function get_level_all(data, id, arr = []) {
data.find((item) => {
if (item.id === id) {
arr.push(item.id);
return true;
} else if (item.hasChildren && item.children.length) {
arr = get_level_all(item.children, id, arr);
if (arr.length) {
arr.push(item.id);
return true;
} else {
return false;
}
}
return false;
});
return arr;
}
调用:
get_type_level_all(a, 4) //返回 [4, 5, 2]
扫描二维码关注公众号,回复:
13779459 查看本文章