【问题标题】:Iterating data to get value迭代数据以获取价值
【发布时间】:2014-01-14 00:19:23
【问题描述】:

我有以下循环

for (var i in data) {
   console.log(data[i])
}

我 for 循环遍历的数据是

 "data": [
    {
      "MainArea": "North West"
    },
    {
      "MainArea": "South West"
    },

当我运行它时,我在 firebug 中得到以下输出

[Object { MainArea="North West"}, 
Object {  MainArea="South West"}]

我想要得到的只是它的价值。所以当我尝试时

console.log(data[i].MainArea)

希望只获得“西北”和“西南”值,而不是 我在控制台中得到“未定义”。

【问题讨论】:

  • 看下面的答案,需要遍历data.data

标签: javascript jquery


【解决方案1】:

尝试以下操作:

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。在here 中阅读有关此内容的信息。一些 jsPerf 比较可见here

【讨论】:

  • 好的。你能发布你的data对象初始化吗?
  • 我刚刚用原始数据更新了代码。我从存储过程中获取这些数据。一切正常,我只是不知道如何获得价值部分,即“西北”..谢谢
  • 这里是Demo。对不起,我很忙,无法及时提供答案:(
【解决方案2】:

问题是你正在迭代的数据对象有另一个名为 data 的属性,它是一个包含目标对象的数组,当然你需要使用的属性键是MainArea 所以试试

var data = {
    "data": [{
        "MainArea": "North West"
    }, {
        "MainArea": "South West"
    }]
}
for (var i in data.data) {
    console.log(data.data[i].MainArea)
}

演示:Fiddle

【讨论】:

    【解决方案3】:

    对象定义如下:

    { MainArea="North West" }
    

    所以它只有一个属性,称为MainArea。没有名为value 的属性,所以value 当然是undefined。试试:

    console.log(data[i].MainArea)
    

    【讨论】:

    • 这不是正确的 JS 语法。对象属性是key: value,而不是key=value
    • @jfriend00:有效点,但这里的语法似乎是他在调试器中看到的。它只是从问题中复制/粘贴的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-26
    • 2019-10-25
    • 2017-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多