我正在尝试遍历一个对象中包含的值数组,该对象本身包含在另一个对象中。
该对象如下所示:
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);
});
});
呼!
答案 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);
});
});