我有以下循环
for (var i in data) { console.log(data[i]) }
我循环迭代的数据是
"data": [ { "MainArea": "North West" }, { "MainArea": "South West" },
当我运行它时,我在firebug中得到以下输出
[Object { MainArea="North West"}, Object { MainArea="South West"}]
我想要得到的只是它的价值.所以,当我尝试
console.log(data[i].MainArea)
希望得到"西北"和"西南"的价值观,而不是在我的控制台中得到"未定义".
试试以下:
console.log(data[i].MainArea);
您正试图从对象属性中获取信息.由于您的变量包含在json格式列表中,因此您可以通过命名属性访问变量.
更新:根据您对原始问题的补充,我创建了DEMO.
var myObj = {"data": [ { "MainArea": "North West" }, { "MainArea": "South West" }, ], }, data = myObj['data'], data_length=data.length; for (var i= 0; i < data_length; i++) { console.log(data[i].MainArea); }
请记住,当您迭代键值对时,您应该使用for ... in
循环,而在迭代数组时,您应该使用for
循环.例如,如果您的data
属性包含有序数组,则for ... in
循环将无法保证从数组项循环0
到N
.这意味着它不会遵循顺序.因此,仅对for
数组和for ... in
非数组对象使用循环.在这里阅读此内容.这里可以看到一些jsPerf比较.