2017-10-30 1 views
0

배열을 반전하고 첫 번째 위치로 밀 때 속도가 느리기 때문에 가장 깊은 항목을 먼저 반환하는 재귀 함수가 필요합니다. 마지막으로 부모가 먼저되도록 재귀 함수에서 마지막 항목을 먼저 반환하십시오.

function findParents(myObject, parents = []) { 
    if (myObject.parent) { 
    parents.push(myObject.parent.id); 
    return findParents(myObject.parent, parents); 
    } 

    return parents; // [2, 1] 
} 

내가 나에게 객체 부모의 ID의 배열을 반환하는 재귀 함수가 필요합니다

const myObject = { 
    id: 3, 
    parent: { 
     id: 2, 
     parent: { 
      id: 1, 
      parent: null, 
     }, 
    }, 
}; 

그리고 재귀 함수 :

나는 개체가 반환되는 배열 내 함수에 해당 개체에 전달하면 위의 예를 들어 그래서,이 같은 부모의 id의를 반환해야합니다 :

[1, 2] 
+0

당신은 여전히 ​​적절한 총 소유 비용 (TCO)을 할 수있는 기능이 필요하십니까? –

+1

왜 그냥 배열을 팝하지? – mplungjan

+1

배열에 정상적인 순서를 푸는 알고리즘이 있다면'array.push' 대신에'array.unshift' 만 쓸 수 있습니다. 이동하지 않으면 앞으로 이동합니다. – TKoL

답변

2
function findParents(myObject, parents = []) { 
    if (myObject.parent) { 
    parents = findParents(myObject.parent, parents); 
    } 
    parents.push(myObject.id) 
    return parents; // [2, 1] 
} 
+0

이것은 [1] – user3743266

+1

를 반환했다. 나는 그것을 업데이트했다. – TKoL

+0

감사합니다. 그래서 간단한 논리 오류였습니다. 알아낼 수 없었습니다. 왜 사람들은 아무 이유없이 무작위로 downvote합니까? 내 질문이 꽤 분명하다고 생각 했어. – user3743266