2016-05-18 3 views
1

У меня есть этот массив JSONКак динамически добавить атрибут в JSON массив

{"nodes":[ 
     {"type":"simple-node","left":500,"id":"node-start","content":"Start"}, 
     {"type":"simple-node","left":500,"id":"node-1","content":"Ironing"}, 
     {"type":"simple-node","left":500,"id":"node-end""content":"End"} 
     ], 

"connections":[ 
     {"start":"node-start","end":"node-1"}, 
     {"start":"node-4","end":"node-5"} 
       ] 
} 

Мне нужно динамически добавлять «верхний» атрибут к каждому элементу в узлах решетки, так что она может выглядеть следующим образом

{"nodes":[ 
     {"type":"simple-node","left":500,"top":3403.252685546875,"id":"node-start","content":"Start"}, 
     {"type":"simple-node","left":500,"top":3703.252685546875,"id":"node-1","content":"Ironing"}, 
     {"type":"simple-node","left":500,"top":3903.252685546875,"id":"node-end""content":"End"} 
     ], 

"connections":[ 
     {"start":"node-start","end":"node-1"}, 
     {"start":"node-4","end":"node-5"} 
       ] 
+3

итерацию и применять. –

+0

Проанализирован ли JSON? Откуда берутся эти новые цифры? Являются ли они случайными числами? Что вы пробовали? Здесь недостаточно информации, чтобы дать достойный ответ. –

+0

@Squint да json разобран. новый верх происходит из смещения элемента управления –

ответ

1

Вы можете использовать forEach на obj.nodes и добавить свойство объекта

var obj = {"nodes":[{"type":"simple-node","left":500,"id":"node-start","content":"Start"},{"type":"simple-node","left":500,"id":"node-1","content":"Ironing"},{"type":"simple-node","left":500,"id":"node-end","content":"End"}],"connections":[{"start":"node-start","end":"node-1"},{"start":"node-4","end":"node-5"}]} 

obj.nodes.forEach((e) => { 
    e.top = 3403.252685546875; 
}); 

console.log(obj) 

Обновление: сначала вам нужно превратить вашу строку json в объект с помощью JSON.parse(yourjson), если вы этого не сделали.

+0

Это будет работать, если JSON уже разобран и если OP захочет добавить одинаковый номер к каждому объекту. Вопрос не указывает ни на один из них. –

+0

var obj = JSON.parse ($ ("# hdnchartJSON"). Val()); var i = 100; obj.nodes.forEach ((e) => { e.top = $ ("# Label2"). Offset(). Top + i; i = i + 100; }); Решено –

0
var obj={"nodes":[ 
     {"type":"simple-node","left":500,"id":"node-start","content":"Start"}, 
     {"type":"simple-node","left":500,"id":"node-1","content":"Ironing"}, 
     {"type":"simple-node","left":500,"id":"node-end""content":"End"} 
    ]}; 
     var top_array=[2495,4985,3467]; 
     for(i=0;i<obj.nodes.length;i++){ 
      obj.nodes[i].top=top_array[i]; 
     } 

В случае, если вам нужно скопировать ключи из массива

+0

Большое спасибо –

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