2011-08-29 106 views
1

我想循环通过一个包含在另一个对象本身包含的对象内的值的数组。通过数组在对象内循环,在另一个对象内使用jQuery?

物体看起来是这样的:

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

如果你想出来,你应该把它作为答案发布,而不是编辑它到问题中。你可以以这种方式获得代表权,如果他们认为他们的方法更好,他们更可能发布其他答案。 – karim79

+0

感谢Karim79。会做。 –

回答

8

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

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

的确,我只是认真地挖掘每种方法!非常多才多艺。谢谢anyhoo。 –

+0

给他自己的。我只是觉得这种方式更清洁你正在做的事情,但如果它的工作做得最好, –

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); 
    }); 
}); 
+0

为什么在世界上你会这样做而不是普通的javascript? –

+0

不能说这是比Corey更好的答案(显然不是!),但我只是在学习走路。 –

+0

好吧。我认为这可能会更好一些。 –