私はオブジェクトの配列を持っています。オブジェクトには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に問題が生じています、ツリー構造を削除し、それぞれがrelationship_idとparent_relationship_idオブジェクト与える配列を返すmy_array_of_objectsを再帰的にループしようとしていますなぜ起こるのかわかりません...私はそれがスコープ上の問題だと思いますか?
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