我有以下循环
for (var i in data) {
console.log(data[i])
}
Run Code Online (Sandbox Code Playgroud)
我循环迭代的数据是
"data": [
{
"MainArea": "North West"
},
{
"MainArea": "South West"
},
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我在firebug中得到以下输出
[Object { MainArea="North West"},
Object { MainArea="South West"}]
Run Code Online (Sandbox Code Playgroud)
我想要得到的只是它的价值.所以,当我尝试
console.log(data[i].MainArea)
Run Code Online (Sandbox Code Playgroud)
希望得到"西北"和"西南"的价值观,而不是在我的控制台中得到"未定义".
试试以下:
console.log(data[i].MainArea);
Run Code Online (Sandbox Code Playgroud)
您正试图从对象属性中获取信息.由于您的变量包含在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);
}
Run Code Online (Sandbox Code Playgroud)
请记住,当您迭代键值对时,您应该使用for ... in循环,而在迭代数组时,您应该使用for循环.例如,如果您的data属性包含有序数组,则for ... in循环将无法保证从数组项循环0到N.这意味着它不会遵循顺序.因此,仅对for数组和for ... in非数组对象使用循环.在这里阅读此内容.这里可以看到一些jsPerf比较.