我有这个嵌套对象:
"State Names": {
"State Cities": {
"Los Angeles": {
"about": "story",
"zip": "91721"
},
}
}
我试图让它看起来像这样:
state: {
city: [
"name": "Los Angeles",
"about": "story",
"zip": "91721"
]
}
我试过下面的代码:
var o = {
"State Names": {
"State Cities": {
"Los Angeles": {
"about": "story",
"zip": "91721"
},
}
}
}
var v = o["State Names"];
var z = v["State Cities"];
const result = Object.keys(z).map(i => z[i]);
const state = {
city: [...result]
}
this.setState({
state
})
但是我的结果没有显示城市名,只显示了about和zip。如何在映射函数期间将对象键名作为属性包含到数组中?
最佳答案
使用object spread (或 Object.assign()
)克隆城市对象,并添加名称属性:
const o = {"State Names":{"State Cities":{"Los Angeles":{"about":"story","zip":"91721"}}}};
const cities = o['State Names']['State Cities'];
const result = Object.keys(cities).map(name => ({ ...cities[name], name }));
const state = {
city: [...result]
};
console.log(state);
关于Javascript 对象到数组中将对象属性名称移动到数组键中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49682565/