使用jQuery在另一个对象内循环遍历对象内的数组?

时间:2011-08-29 08:38:05

标签: javascript jquery loops

我正在尝试遍历一个对象中包含的值数组,该对象本身包含在另一个对象中。

该对象如下所示:

var guitar = {
  high4high5: {
    name: 'high 4th, high 5th',
    tuning: [ [5,4], [-2,3], [2,3], [7,3] ]
  },
  high4low5: {
    name: 'high 4th, low 5th',
    tuning: [ [5,4], [-2,3], [2,3], [7,2] ]
  }
}

我知道我可以像每个循环一样循环使用jQuery:

$.each(guitar, function(key, value) {
  console.log('1st loop: ' + key, value);
  $.each(value, function(key, value) {
    console.log('2nd : ' + key, value);
    $.each(value, function(key, value) {
      console.log('3rd : ' + key, value);
    });
  });
});

但显然这最终会一次又一次地遍历所有内容。

我需要获取的数据是每个对象的'name'(字符串)和'tuning'(数组)。

我认为有更好的方式来获得我想要的东西,而不仅仅是无限循环!

可能需要注意的是,我不知道对象内部对象的名称('high4high5'等),但我知道这个对象中的值将始终是name:(string)和tuning :(数组)。

修改

好的,我明白了。

$.each(guitar, function(key, value) {
  var tuningName = value.name;
  var tuningArray = value.tuning;
  console.log('name: ' + tuningName);
  $.each(tuningArray, function(key,value) {
    console.log(value);
  });
});

呼!

2 个答案:

答案 0 :(得分:8)

你真的不需要 jQuery来做这件事。你可以用老式的Javascript来做到这一点:

for(g in guitar) {
    console.log(guitar[g].name);
    console.log(guitar[g].tuning);
}

答案 1 :(得分:1)

我在这里说我已经设法使用jQuery每个循环回答我自己的问题。这绝对是一种更冗长的方式!

$.each(guitar, function(key, value) {
  var tuningName = value.name;
  var tuningArray = value.tuning;
  console.log('name: ' + tuningName);
  $.each(tuningArray, function(key,value) {
    console.log(value);
  });
});