迭代具有内部对象数组的对象并获取键索引nodejs

时间:2017-09-04 11:39:25

标签: javascript node.js

我遇到了问题。我有一个对象,里面有一个对象数组,我想迭代它,在每个数组中,我得到我想要的具体位置。

所以我希望第一个元素获取[0],第二个元素获取[0],第三个元素需要[2],最后一个元素需要[0]

values ************** [ anonymous { medium: [ 0.28, 0.26, 0.13 ] },
4|wscontro |   anonymous { medium: [ 13.51, 0.04, 0.75 ] },
4|wscontro |   anonymous { medium: [ 1527.58, 262.98, 27.4, 59.49 ] },
4|wscontro |   anonymous { medium: [ 60305.25, 0 ] } ]
4|wscontro | values type of -------- object
4|wscontro | values ************** [{"medium":[0.28,0.26,0.13]},{"medium":[13.51,0.04,0.75]},{"medium":[1527.58,262.98,27.4,59.49]},{"medium":[60305.25,0]}]
4|wscontro | item ---->>>  anonymous { medium: [ 0.28, 0.26, 0.13 ] }
4|wscontro | item ---->>>  anonymous { medium: [ 13.51, 0.04, 0.75 ] }
4|wscontro | item ---->>>  anonymous { medium: [ 1527.58, 262.98, 27.4, 59.49 ] }
4|wscontro | item ---->>>  anonymous { medium: [ 60305.25, 0 ] }

我想要

  

0.28,13.51,27.4,60305.25

我不知道如何使用我的forEach来获取密钥的索引。

我的代码:

var allPromises=[];                 

                allPromises.push(Database.Alerts.getDeviceSystemByDeviceId("system.load", device.id));
                allPromises.push(Database.Alerts.getDeviceSystemByDeviceId("disk_space.sda3", device.id));
                allPromises.push(Database.Alerts.getDeviceSystemByDeviceId("system.ram", device.id)); 
                allPromises.push(Database.Alerts.getDeviceSystemByDeviceId("platform.temperatures", device.id));

                Promise.all(allPromises).then(function(values){
                    console.log("values **************", values);
                    console.log("values type of --------", typeof(values));

                    console.log("values **************", JSON.stringify(values));

                    values.forEach(function(item){
                        console.log("item ---->>> ", item);
                    });

2 个答案:

答案 0 :(得分:1)

为forEach中调用的函数添加索引参数:

values.forEach(function(item, index){
    console.log("item ---->>> ", item);
    console.log("index --->>> ", index);
});

答案 1 :(得分:1)

Array.prototype.forEach以及Array.prototype.map实际上可以将索引作为回调的第二个参数。由于你想要找回几个数字(可能在一个数组中),那么.map非常适合你的需求。

const relevantValues = values.map(function(item, index){
      if(index == 2) { return item.medium[2] }
      else { return item.medium.[0] }
 });

这会使relatedValues等于[0.28, 13.51, 27.4, 60305.25]