javascript - Create array from JSON object - Stack Overflow

Below is my JSON objectvar validation_messages ={"test1": [{"1": {"rssi"

Below is my JSON object

var validation_messages ={
"test1": [{
    "1": {

        "rssi": -25,

    }
}, {
    "2": {

        "rssi": -25,

    }
}],
"test2": [{
    "15": {

        "rssi": -10,
                }
}, {
    "19": {

        "rssi": -21,

    }
}]

}

and below is what I have tried

var rssival= []; for (var key in validation_messages) {

var obj = validation_messages[key];

for (var i=0; i<obj.length; i++) {
  for(x in obj[i]){

   rssival.push(obj[i][x].rssi);
  } 
}

} console.log(rssival)

I am getting output as

[-25, -25, -10, -21]

But I need an output as

[[-25, -25], [-10, -21]]

Can anyone please help me?

Below is my JSON object

var validation_messages ={
"test1": [{
    "1": {

        "rssi": -25,

    }
}, {
    "2": {

        "rssi": -25,

    }
}],
"test2": [{
    "15": {

        "rssi": -10,
                }
}, {
    "19": {

        "rssi": -21,

    }
}]

}

and below is what I have tried

var rssival= []; for (var key in validation_messages) {

var obj = validation_messages[key];

for (var i=0; i<obj.length; i++) {
  for(x in obj[i]){

   rssival.push(obj[i][x].rssi);
  } 
}

} console.log(rssival)

I am getting output as

[-25, -25, -10, -21]

But I need an output as

[[-25, -25], [-10, -21]]

Can anyone please help me?

Share Improve this question asked Mar 17, 2017 at 12:07 Delphin SamDelphin Sam 1422 silver badges13 bronze badges
Add a ment  | 

4 Answers 4

Reset to default 5

You can try something like this:

var validation_messages={"00:11:74:41:3d:f0":[{1:{channel:1,type:2,rssi:-25,rate:24}},{2:{channel:1,type:2,rssi:-25,rate:24}}],"00:23:68:bd:6c:19":[{15:{channel:1,type:0,rssi:-10,rate:1}},{19:{channel:1,type:2,rssi:-21,rate:54}}]};

var result = Object.keys(validation_messages).map(function(k){
  var tmp = [];
  validation_messages[k].forEach(function(o){ 
    for(var k in o){
      tmp.push(o[k].rssi)
    }
  })
  return tmp
});
console.log(result)

Isn't this what you need?

var validation_messages={"00:11:74:41:3d:f0":[{1:{channel:1,type:2,rssi:-25,rate:24}},{2:{channel:1,type:2,rssi:-25,rate:24}}],"00:23:68:bd:6c:19":[{15:{channel:1,type:0,rssi:-10,rate:1}},{19:{channel:1,type:2,rssi:-21,rate:54}}]};

var rssival = [];

for (var key in validation_messages) {
  var obj = validation_messages[key];
  var aux = [];
  for (var i = 0; i < obj.length; i++) {
    for (x in obj[i]) {
      aux.push(obj[i][x].rssi);
    }
  }
  rssival.push(aux);
}
console.log(rssival);

https://jsfiddle/etbzjs0x/

Another approach.

var obj = {"00:11:74:41:3d:f0":[{1:{channel:1,type:2,rssi:-25,rate:24}},{2:{channel:1,type:2,rssi:-25,rate:24}}],"00:23:68:bd:6c:19":[{15:{channel:1,type:0,rssi:-10,rate:1}},{19:{channel:1,type:2,rssi:-21,rate:54}}]},
    result = Object.keys(obj).map(function(v) {
      var arr = [];
      obj[v].forEach(c => arr.push(c[Object.keys(c)].rssi));
      return arr;
    });

    console.log(result);

You could group all properties with Array#map.

var validation_messages = validation_messages = { "00:11:74:41:3d:f0": [{ "1": { channel: 1, type: 2, rssi: -25, rate: 24 } }, { "2": { channel: 1, type: 2, rssi: -25, rate: 24 } }], "00:23:68:bd:6c:19": [{ "15": { channel: 1, type: 0, rssi: -10, rate: 1 } }, { "19": { channel: 1, type: 2, rssi: -21, rate: 54 } }] },
    grouped = Object.keys(validation_messages).map(function (k) {
        return validation_messages[k].reduce(function (r, o) {
            Object.keys(o).forEach(function (l) {
                r.push(o[l].rssi);
            });
            return r;
        }, []);
    });

console.log(grouped);

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745040228a4607765.html

相关推荐

  • javascript - Create array from JSON object - Stack Overflow

    Below is my JSON objectvar validation_messages ={"test1": [{"1": {"rssi"

    8小时前
    30

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信