【问题标题】:node.js loop through object arraynode.js 循环遍历对象数组
【发布时间】:2015-12-28 22:43:46
【问题描述】:

我正在尝试将数组中的多个对象存储为变量。我真的希望这是有道理的。

所以,我可以将数组的一个元素存储在一个变量中。

var data = msg.payload.data;
msg.payload = data.observations[0].clientMac;
return msg;

但是,我想循环遍历每个键,获取 mac,并将其存储在一个新数组中,而不是仅从键 0 开始。我只是不知道该怎么做。

以下是数据格式的示例:

    {
    "apMac" : "aa:bb:cc:11:22:33",
    "apFloors" : [],
    "apTags" : [],
    "observations" : [{
            "ipv4" : null,
            "location" : {
                "lat" : 5.73212614236217,
                "lng" : -5.01730431523174,
                "unc" : 1.5059361681363623,
                "x" : [],
                "y" : []
            }, 
            "seenTime" : "2015-09-30T10:59:01Z",
            "ssid" : null,
            "os" : null,
            "clientMac" : "bb:cc:dd:33:22:11",
            "seenEpoch" : 1443610741,
            "rssi" : 46,
            "ipv6" : null,
            "manufacturer" : "Hewlett-Packard"
        }
      ]
}

【问题讨论】:

  • 查找Object.keysArray.foreach
  • 为什么您的示例数据中没有显示.clientMac 属性?

标签: arrays node.js loops


【解决方案1】:

data.observations 只是一个对象数组。有很多方法可以遍历数组。这是一个:

data.observations.forEach(function(item) {
    console.log(item.clientMac);
});

或者,如果你想创建一个数组,你可以这样做:

var macs = data.observations.map(function(item) {
    return item.clientMac;
});
console.log(macs);     // an array of clientMac properties

您可以查看array.map()array.forEach() 的文档。

【讨论】:

  • 谢谢!其他答案是正确的;但是,您的示例开箱即用。我想我应该能够在您分享的内容的基础上添加位置和时间戳数据。
【解决方案2】:

你也可以写:

for( var item in data.observations){
 console.log(item.bla);
}

for(var index=0;index<data.observations.length;index++){
 console.log(data.observations[index].bla);
}

【讨论】:

    猜你喜欢
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 2016-07-28
    • 2017-01-29
    • 2015-10-15
    相关资源
    最近更新 更多