2011-08-29 72 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

好吧。我認爲這可能會更好一些。 –