2
我有一個JSON對象,我試圖實現的是,我可以通過id搜索child_objects的對象。我正在使用Array.each()
和功能與像以下遞歸:mootools javascript返回Array.each()與遞歸
1 Template.get_object_attributes_by_id = function(id, template)
2 {
3 var template_obj = JSON.parse(template);
4 console.log(Template.check_for_id_equality(template_obj, id);
5 return Template.check_for_id_equality(template_obj, id);
6 }
7
8 Template.check_for_id_equality = function(obj, id)
9 {
10 if (obj.attrs.id !== id) {
11 if (obj.children === null || obj.children === undefined) {
12 return;
13 }
14 Array.each(obj.children, function(obj_child) {
15 return Template.check_for_id_equality(obj_child, id);
16 });
17 }
18 else {
19 console.log(obj);
20 return obj;
21 }
22 }
線19的輸出是調用Template.get_object_attributes_by_id(id, template)
後正確的對象,但第4行的輸出爲undefined
。 看來,Array.each()
「忽略」的回報,只是繼續前進。所以現在我的問題是,如何正確返回對象,以便我可以在函數get_object_attributes_by_id()
中獲得它。
更新:
輸入(模板)是像下面,其中我尋找id爲「佔位符-2」例如一個JSON對象。這只是一個例子,所以請不要查找丟失的括號或類似的東西,因爲我使用的真正的JSON對象顯然是有效的。
{
"className":"Stage",
"attrs":{
"width":1337,
"height":4711
},
"children":[{
"className":"Layer",
"id":"placeholder-layer",
"attrs":{
"width":1337,
"height": 4711
},
"children":[{
"className":"Text",
"id":"placeholder-1",
"attrs":{
"fontsize":42,
"color":"black",
...
}
},
{
"className":"Text",
"id":"placeholder-2",
"attrs":{
"fontsize":37,
"color":"red",
...
}
},
...
]
}]
}
,這將預期輸出:
{
"className":"Text",
"id":"placeholder-2",
"attrs":{
"fontsize":37,
"color":"red",
...
},
}
你檢查MooTools的的[Object.subset(http://mootools.net/core/docs/1.6.0/Types/Object#Object:Object-subset) ?如果這不是你想要的,你可以提供你想要達到的輸入和輸出的例子嗎? – Sergio
@Sergio遺憾'Object.subset'不是我所需要的。我已經通過示例輸入和預期輸出更新了問題。 – GiftZwergrapper