在递归函数中首先返回最后一项

时间:2017-10-30 17:31:48

标签: javascript arrays function recursion

我需要一个递归函数,它首先返回最深的项目,因为反转数组并推到第一个位置的速度很慢。

我有一个对象:

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]

1 个答案:

答案 0 :(得分:2)

function findParents(myObject, parents = []) {
  if (myObject.parent) {
    parents = findParents(myObject.parent, parents);
  }
  parents.push(myObject.id)
  return parents; // [2, 1]
}
相关问题