2015-03-17 8 views
-1

Я хочу вставить объект say- {id:parentid+appendvalue} в каждый массив детей, используя javascript/jquery. Вот мой пример данных:Как добавить узел к дочернему объекту

var obj={ 
    "name": "root", 
    "id":12, 
    "children": [ 
     { 
      "name": "child-1", 
      "children": [ 
       { 
        "name": "inner-child" 
       } 
      ] 
     }, 
     { 
      "name": "child-2" 
     } 
    ] 
}; 

Каждый объект имеет формат {name,id,children[]} .Здесь, я хочу, чтобы вставить {id:parentid+".0"} рекурсивно для всех дочерних узлов, так что, я хотел бы получить следующий вывод.

var obj={ 
    "name": "root", 
    **"id":12**, 
    "children": [ 
     { 
      "name": "child-1", 
      **"id": 12.0** 

      "children": [ 
       { 
        "name": "inner-child", 
        **"id" : 12.0.0** 
       } 
      ] 
     }, 
     { 
      "name": "child-2", 
      **"id": 12.1** 
     } 
    ] 
}; 

Пожалуйста, обратите внимание, приемлю дети это не ограничено до любого уровня. Пожалуйста помоги.

+1

@sureshjain: Вопрос не относится к JSON. JSON - текстовая нотация, используемая для обмена данными. Ваш вопрос касается изменения объектов JavaScript в памяти, которые не связаны с JSON. –

ответ

0

Вы могли бы попробовать что-то вроде этого:

for(var i = 0; i < obj.children.length; i++) 
{ 
    var parentIDString = parentid + ".0"; 
    for(var j = 0; j < i; j++) 
    { 
     parentIDString += ".0"; 
    }  
    obj.children[i]['id'] = parentIDString; 

} 
+0

Привет, brso05, мне нужно добавить «.0» в зависимости от уровня children.say, первый дочерний узел будет иметь id: 12.0, дочерний узел второго уровня будет иметь id: 12.0.0. это нужно делать рекурсивно, отслеживая уровень детей из родительского узла. –

+0

Вы можете использовать цикл и создать строку, добавляющую число 0, необходимое в зависимости от того, сколько детей там до сих пор ... Я отправлю пример. – brso05

+0

@sureshjain Я не уверен, что вы хотите, но, может быть, мой обновленный ответ вам поможет? – brso05

Смежные вопросы