[英]Iterating over objects in Javascript
我有一個形式的obejct:
var test = {"2011":{"10":4,"9":9,"8":15,"7":11,"6":11,"5":13,"4":9,"3":5,"2":9,"1":4,"0":20},"2010":{"11":9,"10":23,"9":58}}
我想迭代這個,所以我可以打每年和每月組合。 我有:
var years = d3.keys(test),
months = d3.range(12),
data = [];
因此,作為一個Javascript新手,為了理智檢查我檢查years
事情。
document.writeln(years)
2011,2010
很酷,但是當我嘗試迭代years
數組來從test
提取數據時我會做我認為正確測試的元素,但元素丟失了:
for(var y in years) {
document.writeln(y);
}
0,1
如何迭代years
才能獲得實際元素( 2011,2010
)?
for in
檢索索引/鍵(不是值)。
你需要修改你的循環,如下所示:
for(var y in years) {
document.writeln(years[y]);
}
編輯 - 每個missingno的評論,使用for in
迭代數組是一個壞主意 。
for(var i = 0, l = years.length; i < l; i++) {
document.writeln(years[i]);
}
一些額外的信息......如果你對一個對象使用for / in循環,它也會迭代你的屬性鍵。 例如,
for(var y in test) {
//This will yield, "2011" and then "2010"
document.writeln(y);
}
在for in
循環的javascript for in
不做你認為他們做的事情; 他們給你鑰匙,而不是元素
你要
for(var y in years) {
document.writeln(years[y]);
}
因為你得到0,1回來,看起來幾年是一個真正的數組,所以你也可以這樣做
for(var i = 0; i < years.length; i++) {
document.writeln(years[i]);
}
此外,您已經編輯了標題,但是有關術語的說明。 如果它是一個字符串,那么它是JSON。 如果它是一個對象,那么,它就是一個對象。 沒有“json對象”或“json數組”這樣的東西
據我所知, var y in years
會給你的鑰匙數組years
。 years[y]
應該給你實際價值。
y將最終成為您訪問元素的索引,年份為0和1(因為年份是數組)。 因此,要訪問年份的值,請嘗試使用
writeln(years[y])
代替
writeln(y)
(恕我直言,Javascript通過這種方式有點反直覺)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.