Javascript 对象到数组中将对象属性名称移动到数组键中

标签 javascript arrays object

我有这个嵌套对象:

"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/

相关文章:

javascript - 如何按数组值对 javascript 对象进行排序

c++ - C++ 中的对象究竟是什么?

javascript - 谷歌地图中两点之间的多条折线

javascript - 将 konva js Canvas 转换为图像并将这些图像加载到另一个 Canvas

php - 又一个世界城市自动完成字段问题

arrays - 数组公式的多个条件

javascript - 如何从 AlloyUI 图表中提取含义?

java - 使用字符串输入中的字符填充二维数组

php - 如何通过 php 从 mysql 获取行/数组/关联结果中的特定值检索行号?

jquery - 遍历对象+数组+对象