我的东西是这样的
const employees = {
"0813562121": {
"city": "Melbourne",
"name": "Allison"
},
"8753452122": {
"city": "Melbourne",
"name": "Aria"
}
}
我需要把它变成这样
const employees = [
{
"city": "Melbourne",
"name": "Allison",
"_id": "0813562121"
},
{
"city": "Melbourne",
"name": "Aria",
"_id": "8753452122"
}
]
我想使用 Object.keys(employees )
和 Object.values(employees )
的索引,但我想不通。
答案 0 :(得分:1)
您使用 Object.values
是正确的,但我会使用 Object.entries
,因为它为您提供了属性名称及其值。然后是map
:
const result = Object.entries(employees).map(([name, value]) => ({...value, _id: name}));
现场示例:
const employees = {
"0813562121": {
"city": "Melbourne",
"name": "Allison"
},
"8753452122": {
"city": "Melbourne",
"name": "Aria"
}
};
const result = Object.entries(employees).map(([name, value]) => ({...value, _id: name}));
console.log(result);
使用:
Object.entries
从对象中获取一组 [name, value]
对。map
将该数组的条目映射为不同的格式map
回调的简洁形式的箭头函数(稍后详细介绍)。map
回调的参数列表中进行解构以获取命名参数中的 name
和 value
。_id
属性或者,您可以修改对象而不是创建新对象,以便保留不可枚举或非自己的属性:
const result = Object.entries(employees).map(([name, value]) => {
value._id = name;
return value;
});
现场示例:
const employees = {
"0813562121": {
"city": "Melbourne",
"name": "Allison"
},
"8753452122": {
"city": "Melbourne",
"name": "Aria"
}
};
const result = Object.entries(employees).map(([name, value]) => {
value._id = name;
return value;
});
console.log(result);
关键在于,employees
和 result
中都有 same 对象,而第一个对象是浅拷贝。
答案 1 :(得分:0)
试试这个
const employees = {
"0813562121": {
"city": "Melbourne",
"name": "Allison"
},
"8753452122": {
"city": "Melbourne",
"name": "Aria"
}
}
let jsonVariants =[];
Object.keys(employees).forEach(function(key) {
let obj =employees[key];
obj["_id"] =key;
jsonVariants.push(obj);
});
console.log(jsonVariants);