我有一个要转换为对象数组的javascript对象
{
"mongo": {
"status": true,
"err": ""
},
"redis": {
"status": true,
"err": ""
},
"rabbitmq": {
"status": true,
"err": ''
}
}
预期输出必须为
[
"mongo": {
"status": true,
"err": ""
},
"redis": {
"status": true,
"err": ""
},
"rabbitmq": {
"status": true,
"err": ""
}
]
使用javascript代码实现此目标的正确方法是什么?
谢谢。
答案 0 :(得分:0)
"mongo": {
"status": true,
"err": ""
}
实际上不是对象,也不是有效的语法。你可以
[
{
"status": true,
"err": ""
},
{
"status": true,
"err": ""
},
{
"status": true,
"err": ""
}
]
从此
Object.keys(obj).reduce((arr, key)=>arr.concat(obj[key]), []);
假设obj
是您的对象,并且可以免费使用ES6语法。或者,您可以拥有这个:
[
{
"mongo": {
"status": true,
"err": ""
}
},
{
"redis": {
"status": true,
"err": ""
}
},
{
"rabbitmq": {
"status": true,
"err": ""
}
}
]
从这里:
Object.keys(obj).reduce((arr, key)=>{
const subObj = {[key]: obj[key]};
return arr.concat(subObj)
}, []);
答案 1 :(得分:0)
预期输出不正确,它不是数组 可以如下:
[
{
"name": "mongo",
"status": true,
"err": ""
},
{
"name" : "redis",
"status": true,
"err": ""
},
{
"name" : "rabbitmq",
"status": true,
"err": ""
}
]
并且要获得这样的输出,您必须为此编写一个自定义函数。
答案 2 :(得分:0)
您的预期输出在javascript中在语法上不正确。 JS数组只能具有从0开始的数字索引。在预期的输出中,您已经显示了字符串键。
语法和语义上正确的输出为:
[
{
"name": "mongo",
"status": true,
"err": ""
},
{
"name": "redis",
"status": true,
"err": ""
},
{
"name": "rabbitmq",
"status": true,
"err": ""
}
]
JS代码可实现以下目的:
var obj = {
"mongo": {
"status": true,
"err": ""
},
"redis": {
"status": true,
"err": ""
},
"rabbitmq": {
"status": true,
"err": ''
}
};
var arr = [];
for (key in obj) {
arr.push(Object.assign(obj[key], {name: key}));
}
console.log('sdf', arr);