简体   繁体   English

从JSON对象创建数组

[英]Create array from JSON object

Below is my JSON object 以下是我的JSON对象

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= []; var rssival = []; for (var key in validation_messages) { 对于(validation_messages中的var键){

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) } 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? 谁能帮帮我吗?

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.net/etbzjs0x/ https://jsfiddle.net/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 . 您可以使用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); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM