2014-10-05 2 views
0

Как пропустить следующий объект JSON с двумя или более вложенными массивами? Результат здесь не возвращается с ключом: значение. Это просто ценности.Итерация через объект JSON с вложенными массивами

{"Obj": 
    ["array 0", 
     ["nested array 1"], 
     ["nested array 2"] 
    ] 
}; 

Я могу просматривать каждый массив, используя Obj[1], но выход остается в формате JSON: {"Obj":["nested array 1"]}. Мне нужно перебирать все из них, чтобы получить текст в каждом вложенном массиве для размещения в текстовом поле ...

Помощь!

Спасибо всем!

+0

Покажите нам свой код. – PeterKA

+0

Попробуйте использовать цикл while или recursion. Или сгладьте вложенный массив. – elclanrs

+0

Как вы выравниваете вложенный массив? – httpex

ответ

0

Вы можете использовать .each() для перебора массивов на каждом уровне. На первом уровне вы можете использовать $.type(), чтобы определить тип значения, чтобы помочь решить, выводить значение или продолжать его повторять.

var data = {"Obj": 
    ["array 0", 
     ["nested array 1"], 
     ["nested array 2"] 
    ] 
}; 

$.each(data.Obj, function(i,v) { 
    if($.type(v) == 'string') { 
     // assign v to text 
    } else { 
     $.each(v, function(index, value) { 
      //assign value to text 
     }); 
    } 
}); 
0

Для решения без Jquery, попробуйте Obj[i][j]. Следующий код выводит «вложенный массив 1», за которым следует «вложенный массив 2» на консоль.

for (var i = 0; i < Obj.length; i++) { 
    for (var j = 0; j < Obj[i].length; j++) { 
     console.log(Obj[i][j]); 
    } 
} 
+0

Так что я смог заставить ваше решение работать. Спасибо! Как я могу обрабатывать автоматическую циклическую обработку результатов с помощью большего количества измерений? – httpex

+0

Как вы не знаете количество измерений и вам нужно динамически определять, сколько измерений есть? –

0

Простой способ петли через объект или массив состоит в использовании jQuery.each().

Общая функция итератора, которая может использоваться для бесшовной итерации по обоим объектам и массивам. Массивы и объекты типа массива с свойством length (например, объект аргументов функции) повторяются с помощью числового индекса от 0 до длины-1. Другие объекты повторяются через их именованные свойства.

Пример:

var obj = { 
    "flammable": "inflammable", 
    "duh": "no duh" 
}; 
$.each(obj, function(key, value) { 
    alert(key + ": " + value); 
}); 

Если у Вас есть неизвестное количество вложенных массивов, вы, вероятно, захотите создать рекурсивную функцию, которая называет себя с вложенными значениями.

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