Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Получить данные с json array не используя его имя (https://javascript.ru/forum/dom-window/71089-poluchit-dannye-s-json-array-ne-ispolzuya-ego-imya.html)

dima85 25.10.2017 16:02

Получить данные с json array не используя его имя
 
{"cont":[{"type":"text"}],"name":[{"type":"text"}],"tedt":"sdf","cont3":[{"type":"text"}]}


for(var i = 0;i<src.Object.keys[2].length;i++) {  

}


Хочу сделать цикл и посмотреть что находится в "cont3".
Имя "cont3" в цикле писать нельзя. Подскажите как это сделать, я тут что-то намудрил: src.Object.keys[2].length

Nexus 25.10.2017 16:04

var json={"cont":[{"type":"h5"}],"name":[{"type":"h5"}],"tedt":"sdf","cont3":[{"type":"h5"}]};
console.log(json.cont3);

dima85 25.10.2017 16:10

cont3 нельзя писать в js. Нужно его заменить на цифру. Насколько я понимаю он будет [2] судя по моему json.

рони 25.10.2017 16:27

dima85,
var src = {"cont":[{"type":"text"}],"name":[{"type":"text"}],"tedt":"sdf","cont3":[{"type":"всякая хрень"}]}
alert(JSON.stringify(src[Object.keys(src)[3]]));

Dilettante_Pro 25.10.2017 16:49

var src = {"cont":[{"type":"text"}],"name":[{"type":"text"}],"tedt":"sdf","cont3":[{"type":"всякая хрень"}]};
var i = 0;
for(var key in src) {
   if(i == 3) {alert(key+':'+ JSON.stringify(src[key]))};
    i++;
}

dima85 25.10.2017 16:50

А как в цикле показать keys? Я сделал такой вариант, но он в одном alert показывает сразу все, а нужно по одному.
for(var i = 0;i<src[Object.keys(src)[2]].length;i++) {
 alert(Object.keys(src[2][i])); //???
 }


и в этом варианте:
var i = 0;
for(var key in src) {
   if(i == 3) {
   alert(key+':'+ JSON.stringify(src[key]));
   for(var i = 0;i<src[key].length;i++) {
    alert(Object.keys(src[key][i]));
   }
   };
    i++;
}

Alexandroppolus 25.10.2017 17:25

порядок полей не задан по стандарту. Могут перечисляться как угодно.

в чем суть задачи?

Dilettante_Pro 25.10.2017 17:49

dima85,
Цитата:

Сообщение от dima85
как в цикле показать keys?

var src = {"cont":[{"type":"text"}],"name":[{"type":"text"}],"tedt":"sdf","cont3":[{"type":"всякая хрень"}]};

for(var key in src) {
   alert(key+':'+ JSON.stringify(src[key]));
}

dima85 25.10.2017 18:15

Надо в "cont3" пройтись по {*} показать каждый keys и его содержимое в отдельном alert.

Alexandroppolus 25.10.2017 18:29

dima85,
почему "cont3" нельзя писать в js?

Dilettante_Pro 25.10.2017 18:31

dima85,
У вас в cont3 кроме [{"type":"h5"}] ничего больше нет.
Покажите более расширенный пример

dima85 25.10.2017 18:42

Потому что имя "cont3" динамически меняется, я могу выбрать нужное только по очереди, цифре.
@Dilettante Pro

var src = {"cont":[{"type":"text"}],"name":[{"type":"text"}],"tedt":"sdf","cont3":[{"type":"всякая хрень","id":32424,"text":"sfsdf"},{"type":"всякая хрень","id":32424,"text":"sfsdf"},{"type":"всякая хрень","id":32424,"text":"sfsdf"}]}

Alexandroppolus 25.10.2017 19:01

Цитата:

Сообщение от dima85
Потому что имя "cont3" динамически меняется

но ведь в какой-то момент оно становится известным?
если да, то всё просто:

var src = {...};

var keyName = '...'; // имя нужного поля

var value = src[keyName];

Dilettante_Pro 25.10.2017 19:07

var src = {"cont":[{"type":"text"}],"name":[{"type":"text"}],"tedt":"sdf","cont3":[{"type":"всякая хрень","id":32424,"text":"sfsdf"},{"type":"всякая хрень","id":32424,"text":"sfsdf"},{"type":"всякая хрень","id":32424,"text":"sfsdf"}]}
var i = 0;
for(var key in src) {
   if(i == 3) { 
       var arr = src[key];
       for (var j = 0; j<arr.length; j++) {
          var obj = arr[j];
          for(var k in obj) {
              alert(k +":" + obj[k]);
          }
       }
   }
   i++;
}


Часовой пояс GMT +3, время: 10:21.