【问题标题】:Getting property in array获取数组中的属性
【发布时间】:2016-12-25 00:06:22
【问题描述】:

我有一个无法从中获取属性值的数组。 例如:

{
    "data": {
        "1": {
            "id": 1,
          }
      }
    "data": {
         "2": {
            "id": 2,
          }
      } 
}

数组中的项目数是动态的,所以我在尝试获取“id”时不使用固定数字。我使用像 for(i=0;i<array.data.length;i++) 这样的循环函数,然后循环遍历数字,直到满足项目数,从而解决动态项目数问题。但是问题在于,当我尝试使用array.data[i].id 调用"id" 来调用“id”的值时。我得到的只是TypeError: Cannot read property "id" of undefined

所以我的问题是,我如何获得“id”的值?

PS:对不起,如果我的格式很奇怪或草率。这是我在 stackoverflow 上的第一篇文章。

【问题讨论】:

  • 这不是一个数组,它是一个对象。
  • 显示你实际有效的输入结构
  • json 数据看起来格式不正确:5 个左花括号和 2 个右花括号
  • 您的数据格式看起来很奇怪。对于您的问题:{ "data": { "1": { "id": 1, }for(i=0;i<array.data.length;i++) 没有 array.data[0]
  • 是的,我的格式错误,我自己输入的,完全搞砸了。很抱歉。不过,我相信我已经纠正了。

标签: javascript arrays node.js


【解决方案1】:

你不能只使用var key in array吗?

是这样的:

for(var key in array){
  var myData = array[key];

  console.log(myData.id); // should return your data object
}

--在你的情况下,你可能需要一个双倍

//access the array with the sub-arrays:
for(var key in array){
  var myData = array[key];

  //access the data sub-array
  for(var dataKey in myData){
    var id = myData[dataKey].id
  }    

}

【讨论】:

    【解决方案2】:

    您的代码非常非常糟糕。首先,让我们使用有效的 JSON 来解决您的问题。

    [
        {
            "1": {
                "id": 1
             }
          },
        {
             "2": {
                "id": 2
              }
          } 
    ]
    

    看到这是无用的,奇怪的数据,您可以通过以下操作找到某个项目的ID:

    arr[n][n+1]
    

    我仍然不知道你在问什么,你想做什么,或者这有什么用。

    【讨论】:

      猜你喜欢
      • 2018-11-28
      • 2018-03-16
      • 1970-01-01
      • 2019-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多