2017-03-06 62 views
0

生成的字符串來訪問JSON對象的索引我有以下的JSON對象:如何通過內部的迭代

value = { 
"montoBase01": 10, 
"montoBase02": 5, 
"montoBase03": 34, 
"montoBase04": 5, 
"montoBase05": 25, 
"montoBase06": 134, 
"montoBase07": 25, 
"montoBase08": 345, 
"montoBase09": 23, 
"montoBase10": 45, 
"montoBase11": 234, 
"montoBase12": 5 
}; 

而且我想用一個循環功能就像一個用於例如檢索每個指標

for(i=1;i<=12;i++){ 
    var index = ""; 
    if(i<10) 
     index = "montoBase0"+i; 
    else 
     index = "montoBase"+i; 
    var mb = value.index 
} 

但我總是得到未定義的值,是否有可能動態檢索索引?如果是這樣,我的代碼有什麼問題?

+0

你這是什麼實際工作中你想,如果Json與'for'語句沒有關係 – mbeso

+0

迭代索引的其他選項?因爲我只是迭代索引名稱,而不是對象本身 –

+0

我想檢索迭代中的每個索引名稱,然後訪問對象索引。 –

回答

2

您可以使用Object.entries()迭代對象

let value = { 
 
    "montoBase01": 10, 
 
    "montoBase02": 5, 
 
    "montoBase03": 34, 
 
    "montoBase04": 5, 
 
    "montoBase05": 25, 
 
    "montoBase06": 134, 
 
    "montoBase07": 25, 
 
    "montoBase08": 345, 
 
    "montoBase09": 23, 
 
    "montoBase10": 45, 
 
    "montoBase11": 234, 
 
    "montoBase12": 5 
 
}; 
 

 
for (let [key, val] of Object.entries(value)) { 
 
    // do stuff with `key`, `val` 
 
    console.log(key, val); 
 
}

+0

非常有趣的解決方案,我在jQuery中有點新鮮感,我會嘗試學習一些這樣的技巧。謝謝 –

+0

@ManuelVasquezPimentel這實際上是更好的解決方案,用它代替。 –

+0

@ManuelVasquezPimentel答案與jQuery無關 – guest271314

0

您可以使用動態鍵訪問對象成員值,但需要使用不同的語法!在JavaScript中,對象的行爲就像地圖(即鍵值存儲)。您可以使用數組[]等數組獲取成員值,但使用字符串鍵。 MDN Documentation on Property Accessors

for(i=1;i<=12;i++){ 
    if(i<10) 
     rowsTable += "<td class='data'>" + $.formatField(value["montoBase0"+i]) + "</td>"; 
    else 
     rowsTable += "<td class='data'>" + $.formatField(value["montoBase"+i]) + "</td>"; 
    } 
} 
+0

非常有用的信息,我不知道,非常感謝:) –

0

您必須使用方括號

$.formatField(value["montoBase0"+i]) 
$.formatField(value["montoBase"+i]) 

或:

index = "montoBase0"+i; 
var mb = value[index] 

Property accessor

只是注:value變種是一個對象,而不是一個JSON: )

+0

那麼簡單嗎?天哪。 :D謝謝很多人 –

+0

是的,我沒有正確表達問題標題,對此表示遺憾:( –

0

的屬性和值儘量建在功能的jQuery .each()

$(document).ready(function(){ 
 

 
value = { 
 
"montoBase01": 10, 
 
"montoBase02": 5, 
 
"montoBase03": 34, 
 
"montoBase04": 5, 
 
"montoBase05": 25, 
 
"montoBase06": 134, 
 
"montoBase07": 25, 
 
"montoBase08": 345, 
 
"montoBase09": 23, 
 
"montoBase10": 45, 
 
"montoBase11": 234, 
 
"montoBase12": 5 
 
}; 
 

 
$.each(value, function(key, value){ 
 
if(value < 10) 
 
    console.log("montoBase0"+value); 
 
else 
 
    console.log("montoBase"+value) 
 
}) 
 

 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>