2010-07-22 4 views
1

Как бы я прошел через это правильно?Как выполнить цикл через объект JSON, содержащий массивы?

{names:['oscar','bill','brad'],ages:['20','25','18']} 

Так что я бы в принципе получить выход:

names: oscar 
ages: 20 

names: bill 
ages: 25 

names: brad 
ages: 18 

Да я знаю его для ... в цикле, но я просто не могу понять, как получить этот вывод.

ответ

4

возможно

for (var i = 0, len = obj.names.length; i < len; ++i) { 
    var name = obj.names[i]; 
    var age = obj.ages[i]; 
    // ... whatever 
} 

где "OBJ" Ваш объект JSON

+0

да, это кажется правильным, Pointy. Oscaar, зачем, кстати, отформатировать ваш JSON? Почему бы не {{name: 'Oscar', age: 24}, {name: 'Bill', age: 25} ...} –

+0

Это для своего рода DB JSON, использующего localStorage. Я хочу хранить «строки и столбцы» вместо наборов объектов. Ид обычно делаю это по-твоему. –

0
 var data = {names:['oscar','bill','brad'],ages:['20','25','18']} 
     function loop() { 
      var arrNames = data.names; 
      var ages = data.ages; 

      var str = []; 
      for(var i = 0, len = arrNames.length; i < len; i++) { 
       str.push("\nnames: " + arrNames[i] + "\nages:" + ages[i]); 
      } 

      alert(str.join("")); 
     } 
1

Простое предложение. Мне кажется, ниже реализация будет лучше для вас

{ people:[{name:'oscar',age:20},{...},{...}] } 

Переберите этой

var a = { people:[{name:'oscar',age:20}] }; 
var array = a.people 
for(element in array){ 
console.log(array[element].name + ',' + array[element].age); 
} 

мы имеем наш основной объект в переменной а и внутри нас есть массив в людях атрибут нашего объекта , У массива есть объекты нашего человека внутри. поэтому первым человеком в нашем списке является a.people [0] .name это помогает? так как вам нужно использовать закрытие с помощью этого массива, вы можете проверить это сообщение в блоге. http://yilmazhuseyin.wordpress.com/2010/07/19/closure-in-javascript-part-3/

+0

awh, интересно, как бы я посмотрел через это? –

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