Javascript 从JSON对象创建数组
下面是我的JSON对象Javascript 从JSON对象创建数组,javascript,arrays,json,object,Javascript,Arrays,Json,Object,下面是我的JSON对象 var validation_messages ={ "test1": [{ "1": { "rssi": -25, } }, { "2": { "rssi": -25, } }], "test2": [{ "15": { "rssi": -10, } }, { "19": { "rssi": -21, }
var validation_messages ={
"test1": [{
"1": {
"rssi": -25,
}
}, {
"2": {
"rssi": -25,
}
}],
"test2": [{
"15": {
"rssi": -10,
}
}, {
"19": {
"rssi": -21,
}
}]
}
下面是我尝试过的
var rssival=[];
对于(验证消息中的var键){
但我需要一个输出作为
[-25, -25, -10, -21]
[[-25, -25], [-10, -21]]
有人能帮我吗?您可以将所有属性分组
var-validation\u messages=validation\u 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 channel 1,type:0,rssi:-10,rate:1},{“19”:{channel 1,type:2,rssi:-21,rate:54},
分组=对象.keys(验证消息).map(函数(k){
返回验证消息[k].reduce(函数(r,o){
对象。键(o)。forEach(函数(l){
r、 推(o[l].rssi);
});
返回r;
}, []);
});
console.log(分组);
您可以尝试以下方法:
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(验证消息).map(函数(k){
var tmp=[];
验证消息[k].forEach(函数(o){
for(变量k in o){
tmp.push(o[k].rssi)
}
})
返回tmp
});
console.log(result)
这不是您需要的吗
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键){
var obj=验证消息[键];
var aux=[];
对于(变量i=0;i
另一种方法
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}],
结果=Object.keys(obj).map(函数(v){
var-arr=[];
obj[v].forEach(c=>arr.push(c[Object.keys(c)].rssi));
返回arr;
});
console.log(result);
请注意编辑器中的
图标。您可以将代码(JS/CSS/HTML)放入并使其可执行。我刚刚格式化了输入,以便重点放在您的逻辑上。如果不需要,您可以将其还原,我认为您已经过度复杂了。对于这种情况,两个循环就足够了。(:@Kinduser第三个循环对于用户有多个项的情况是必需的。这是一个完整的动态方法。我花了一些时间来弄清楚它是如何工作的,但如果您有多个键,这将不起作用。尽管对于这种情况,这种方法很聪明。:-)@Rajesh谢谢你指出这一点。你能提供一些反例吗,当我的代码不能正常工作时?尝试在“00:11:74:41:3d:f0”中添加{3:{channel:1,type:2,rssi:-30,rate:24}}
再试一次。@Rajesh我已经按照你说的那样添加了它,但我只是认为它可以工作……我错了吗?我的道歉。待命时键入的内容不正确。请检查
[[-25, -25], [-10, -21]]