node.js循环遍历对象数组

时间:2015-10-01 01:26:48

标签: arrays node.js loops

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

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

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

但是我不是只是来自键0的MAC,而是想循环遍历每个键,抓住mac并将其存储在一个新的数组中。我不知道该怎么做。

以下是数据格式化的示例:

    {
    "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"
        }
      ]
}

2 个答案:

答案 0 :(得分: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()的文档。

答案 1 :(得分:0)

你也可以写:

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);
}