// 源数据
let arrs = [
{
id: "1",
name: "a",
list: [
{
id: "2",
name: "b",
list: [
{
id: "3",
name: "e"
},
{
id: "6",
name: "f"
}
]
}
]
},
{
id: "4",
name: "c",
list: [
{
id: "5",
name: "d"
}
]
}
];
// 接收新数据
let newArrs = [];
// 递归循环方法
let fn = function(list, name, prevName) {
for (let i = 0; i < list.length; i++) {
let item = list[i];
if (item.name === name) {
newArrs.push({ id: item.id, name: item.name });
newArrs.reverse();
prevName && fn(arrs, prevName);
return;
} else {
if (item.list) fn(item.list, name, item.name);
}
}
};
// 执行
fn(arrs, "e");
// 打印结果
console.log(newArrs);
打印的结果: