如何将对象转换为对象数组
How to convert object into array of objects
我有一个 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 代码实现此目的的正确方法是什么?
谢谢。
"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)
}, []);
不正确的预期输出,正如你提到的,它不是一个数组
它可以如下:
[
{
"name": "mongo",
"status": true,
"err": ""
},
{
"name" : "redis",
"status": true,
"err": ""
},
{
"name" : "rabbitmq",
"status": true,
"err": ""
}
]
要获得这样的输出,您必须为此编写一个自定义函数。
您预期的输出在 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);
我有一个 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 代码实现此目的的正确方法是什么?
谢谢。
"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)
}, []);
不正确的预期输出,正如你提到的,它不是一个数组 它可以如下:
[
{
"name": "mongo",
"status": true,
"err": ""
},
{
"name" : "redis",
"status": true,
"err": ""
},
{
"name" : "rabbitmq",
"status": true,
"err": ""
}
]
要获得这样的输出,您必须为此编写一个自定义函数。
您预期的输出在 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);