개체 배열이 있습니다. 객체에는 children이라는 속성이있을 수 있으며 inturn에는 객체 배열이 포함됩니다. 사실 그것은 개체 트리입니다. 배열을 반환하는 재귀 JavaScript 함수
var my_array_of_objects=[
{
"object_info": "blah blah",
"children": [
{
"object_info": "blah blah",
"children": [
{
"object_info": "blah blah"
}
]
}
]
},
{
"object_info": "blah blah"
},
{
"object_info": "blah blah"
}
]
나는 그러나 나는 재귀 전에 설정 점점 relationship_id에 문제가 있어요 반복적으로 my_array_of_objects을 통해 루프가 트리 구조를 제거하고 각각 relationship_id과 parent_relationship_id 객체 줄 것이다 배열을 반환하기 위해 노력하고 있어요 나는 왜 그것을 볼 수없는 ... 나는 그것이 범위 문제라고 가정한다.
function sort_relationships(objects, return_objects, parent_relationship_id, relationship_id){
$.each(objects, function(field_key, object){
relationship_id++;
var new_object={};
new_object.relationship_id=relationship_id;
new_object.parent_relationship_id=parent_relationship_id;
new_object.object_info=object.object_info;
// PUSH OBJECT TO THE ARRAY TO BE RETURNED
return_objects.push(new_object);
// IF THE OBJECT HAS CHILDREN THEN RUN THE FUNCTION AGAIN WITH IT'S OBJECTS
if(object.children instanceof Array){
sort_relationships(object.children,return_objects,new_object.relationship_id,relationship_id);
}
});
return return_objects;
}
VAR의 my_new_array = sort_relationships (my_array_of_objects [], 0,0);
위의 코드를 기반으로 각 새로운 객체에 대해 고유 한 relationship_id를 가질 것으로 예상되지만 다음을 반환합니다.
[
{
"relationship_id": 1,
"parent_relationship_id": 0,
"object_info": "blah blah"
},
{
"relationship_id": 2,
"parent_relationship_id": 1,
"object_info": "blah blah"
},
{
"relationship_id": 3,
"parent_relationship_id": 2,
"object_info": "blah blah"
},
{
"relationship_id": 2,
"parent_relationship_id": 0,
"object_info": "blah blah"
},
{
"relationship_id": 3,
"parent_relationship_id": 0,
"object_info": "blah blah"
}
]
나는 다음이 기대 : 각 재귀 호출에 로컬 및 발신자에 반영되지 않은 변수에 relationship_id++
을하고있는
[
{
"relationship_id": 1,
"parent_relationship_id": 0,
"object_info": "blah blah"
},
{
"relationship_id": 2,
"parent_relationship_id": 1,
"object_info": "blah blah"
},
{
"relationship_id": 3,
"parent_relationship_id": 2,
"object_info": "blah blah"
},
{
"relationship_id": 4,
"parent_relationship_id": 0,
"object_info": "blah blah"
},
{
"relationship_id": 5,
"parent_relationship_id": 0,
"object_info": "blah blah"
}
]
당신은 당신의 질문에 예상 출력을 포함 할 수 있습니다. –
@Rafi Ud Daula Refat .. Thnaks, 예상 결과를 추가했습니다. – jon
@Rafi Ud Daula Refat .. 편집을위한 감사 :) – jon