我需要一个递归函数,它首先返回最深的项目,因为反转数组并推到第一个位置的速度很慢。
我有一个对象:
const myObject = {
id: 3,
parent: {
id: 2,
parent: {
id: 1,
parent: null,
},
},
};
一个递归函数:
function findParents(myObject, parents = []) {
if (myObject.parent) {
parents.push(myObject.parent.id);
return findParents(myObject.parent, parents);
}
return parents; // [2, 1]
}
我需要一个递归函数,它返回一个对象父id的数组,以便最后一个父元素在返回的数组中是第一个。所以对于上面的例子,如果我将该对象传入我的函数,它应该像这样返回父对象的id:
[1, 2]
答案 0 :(得分:2)
function findParents(myObject, parents = []) {
if (myObject.parent) {
parents = findParents(myObject.parent, parents);
}
parents.push(myObject.id)
return parents; // [2, 1]
}