javaScript遍历已知对象的属性值显示‘undefined’的问题

数据解析遇到到一个小问题,json格式的数据多层嵌套,大概长这样,事实上结构比这个还复杂(为什么这样?我也不知道, 这要问已经不在的服务端的同志…..)
ex:

{
"data":[
    {
        "刑事":[4,0,0,0,0,0,0,0,0,0,0,0],
        "火灾":[0,0,0,0,0,0,0,0,0,0,0,0],
        "治安":[2,0,0,0,0,0,0,0,0,0,0,0],
        "交通":[3,0,0,0,0,0,0,0,0,0,0,0],
        "求助":[2,0,0,0,0,0,0,0,0,0,0,0],
        "其他":[0,0,0,0,0,0,0,0,0,0,0,0]
    },
    {
      "time": { 
      "date":22,
      "day":5,
      "hours":14,
      "minutes":58,
      "month":11,
      "seconds":26,
      "time":1513925906648,
      "timezoneOffset":-480,
      "year":117
      }
  }
  ]
}

想遍历拿到对象中的数组:
javaScript中,数组可以用循环遍历,但是最初用for循环遍历对象,显示undefined;
如:

for (var Key in res.data.data[0]){
    console.log( Key+':'+res.data.data[0].Key);
}

而以下就可以:

   for (var Key in res.data.data[0]){
    console.log( Key+':'+res.data.data[0][Key]);
   }

for..in循环遍历对象属性,取值时应该这样写,obj[property]
这是为什么呢?

因为property是变量,所以要用中括号,而不是取值。
obj.property取的是obj对象中,键为property的值,也就是obj的名为property的属性值,因为不存在,所以没拿到,就会打印出undefined

再如:

var data ={
      '阴天':'15',
      '晴天':'81',
      '雨天':'12'
};
这样:
for (var Key in data){
     console.log( Key+':'+data[Key]);
}

以上可以在控制台打印:
阴天:15
晴天:81
雨天:12

而以下就不行

for (var val in data){
      console.log( val+':'+data.val]);
}

会在控制台打印:
阴天:undefined
晴天:undefined
雨天:undefined

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kirinlau

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值