Javascript:迭代 JSON 对象

标签 javascript reactjs ecmascript-6

我有一个想要迭代的 JSON 对象。

"phone": {
    "Samsung": {
        "type": "S7"
    },
    "iPhone": {
        "type": "6S"
    },
    "Google": {
        "type": "Pixel"
    }
}

我正在使用Object.key映射这些值中的每一个,我认为这是处理对象的正确方法:

render() {
    //this.props.phone contains the objects "Samsung", "iPhone", and "Google"
    return (
        Object.keys(this.props.phones).map((type) => {
            console.log(type)
            return (
                <p>Type of phone: {type}</p>
            )
        })
    )
} 

但是,console.log当我期待一个对象返回时,上面返回了这个:

enter image description here

为什么它返回一个值,而不是一个对象?

最佳答案

严格来说这是一个答案,但它可以很容易地融入到旧版本的 Javascript 中。

您想使用 Object.valuesObject.entries循环遍历对象中的所有属性。其中 Object.keys 为您提供键,Object.values 为您提供属性(好吧,废话),Object.entries 为您提供一个数组对象中每个条目的[key, value]

您没有在当前代码中使用该键,因此这是 Object.values 选项:

    Object.values(this.props.phones).map((type) => {
        console.log(type)
        return (
            <p>Type of phone: {type}</p>
        )
    })

如果您想同时使用这两个选项,这里是 Object.entries 选项:

    Object.entries(this.props.phones).map(([make, type]) => {
        console.log(make)
        console.log(type)
        return (
            <p>Make of phone: {make}</p>
            <p>Type of phone: {type}</p>
        )
    })

您将看到我们使用 ES6 解构从 Object.entries 获取的数组中获取两个值。

每个函数的垫片都链接在 MDN 页面上。

关于Javascript:迭代 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42352161/

相关文章:

javascript - 如何在 Typescript 中正确使用接口(interface)

javascript - Mongoose 预保存使用不正确的 "this"上下文?

javascript - 将 JS 代码注入(inject)/执行到 IPython notebook 并禁止其在页面重新加载时进一步执行

javascript - 更改 react 大日历事件的颜色

javascript - 如何在 webpack-dev-server 和express 服务器上重新加载模块?

javascript - 如何在 Javascript ES6 中映射 JSON 数据

javascript - 将选项传递给 ES6 模块导入

javascript - 无法从 linkedIn api 获取完整信息

javascript - Window.print 抛出程序停止错误

javascript - MongoDB 聚合框架 - 按年份分组