0
나는 다음과 같은 코드가하는 nodejs 응용 프로그램에서, 인접성 목록 형성 데이터베이스 행의 배열에서 나무를 구축하는 데 사용할 :Underscorejs '발견'은 예상대로 작동하지
// Lay out every node in the tree in one flat array.
var flatTree = [];
_.each(rows, function(row) {
flatTree.push(row);
});
// For each node, find its parent and add it to that parent's children.
_.each(rows, function(row) {
// var parent = _.find(flatTree, function(p) {
// p.Id == row.ParentId;
// });
var parent;
for (var i = 0; i < flatTree.length; i++){
if (flatTree[i].Id == row.ParentId) {
parent = flatTree[i];
break;
}
};
if (parent){
if (!parent.subItems) {
parent.subItems = [];
};
parent.subItems.push(row);
}
});
내가 주석 기대를 _.find
호출은 그 아래에있는 루프 for
루프와 똑같은 작업을 수행하지만 루프는 항상 에 부모 노드를 찾지 않으며 루프는 항상 수행합니다.
// var rootItems = _.filter(flatTree, function (node) {
// //node.ParentId === null;
// node.NoParent === 1;
// })
var rootItems = [];
for (var i = 0; i < flatTree.length; i++){
if (flatTree[i].ParentId == null){
rootItems.push(flatTree[i]);
}
}
나는 underscore-node
패키지를 사용하고 있지만, 일반 underscore
패키지와 동일한 결과를 시도하고 있었다 : 대체 루프가하는 동안
마찬가지로, _.filter
를 호출 단지 중 하나가 작동하지 않습니다 .
네, 감사합니다. 나는 질문을 한 직후에, 화살표 함수 구문에서 내 마음으로 번역 했으므로 반환이 필요하지 않은 것을 깨달았다. 나는 C# LINQ에도 익숙하다. 그러나 나는 다른 사람들을 도울 수있는 질문을 공개적으로 남겨두고 누군가에게 대답 할 수있는 기회를 제공했습니다. – ProfK