【发布时间】:2018-04-11 18:38:31
【问题描述】:
我需要一个递归函数,它首先返回最深的项目,因为反转数组和推到第一个位置很慢。
我有一个对象:
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]
【问题讨论】:
-
为什么不直接弹出数组?
-
好吧,如果你有将正常顺序推入数组的算法,你可以使用
array.unshift而不是array.push。 Unshift 将它们推到前面。 -
换句话说,只要把这个
parents.push(myObject.parent.id);改成parents.unshift(myObject.parent.id); -
但是你的名单有多大?这可能无关紧要。当需要 0.01 秒而不是 0.001 秒时,慢 10 倍是难以察觉的。
-
@user3743266 当我第一次发布我的答案时,它是错误的。我现在改了
标签: javascript arrays function recursion