迭代数据以获得价值

J. *_*son 0 javascript jquery

我有以下循环

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)

希望得到"西北"和"西南"的价值观,而不是在我的控制台中得到"未定义".

Kha*_*lla 5

试试以下:

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循环将无法保证从数组项循环0N.这意味着它不会遵循顺序.因此,仅对for数组和for ... in非数组对象使用循环.在这里阅读此内容.这里可以看到一些jsPerf比较.