当前位置: 首页 > 知识库问答 >
问题:

JavaScript:迭代JSON对象[重复]

邹博明
2023-03-14

我有一个要迭代通过的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返回以下内容:

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

共有1个答案

葛晔
2023-03-14

严格地说,这是ecmascript-2017的答案,但可以很容易地将其嵌入到较旧版本的JavaScript中。

您希望使用object.valuesobject.entries循环对象中的所有属性。其中,object.keys提供键,object.values提供属性(well,duh),object.entries提供对象中每个条目的数组[key,value]

当前代码中没有使用该键,因此下面是object.values选项:

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

下面是object.entrients选项,如果您想同时使用这两个选项:

    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获得的数组中获得两个值。

每个功能的shims都链接在MDN页面上。

 类似资料:
  • 通过一个简单的数组,我可以使用标准的循环来实现: 但是如何用实物来做呢?

  • 问题内容: 我从网络服务器获取以下JSON字符串。 我想要公开HTML中的JSON,我尝试了以下操作,但未填写字段,我也收到了“无异常”,因此我很难找出其不起作用的原因。 TS 的HTML 问题答案: 您可以使用来从对象获取键(需要IE AFAIK中的polyfill)

  • 我目前正在努力迭代从第三方API获取的JSON对象。您可能会看到,以前没有真正处理过获取API。 这是我正在获取的JSON文件: 链接到JSON文件 为了获取数据,我使用一个useFetch脚本,它看起来像这样: 我稍后尝试导出的只是每个角色/冠军的名称(他本身就是一个对象,包括名称、描述等) 不幸的是,我在尝试转换JSON对象表示:

  • 问题内容: 我在尝试解决JQuery $ .each()迭代时遇到一些真正的困难 这是我的数组,为方便起见,限制了结果 我的第一个$ .each迭代效果很好,但是“ EVENTS”的子迭代是我遇到问题的地方 我的第一个$ .each()函数 我无法使用的第二个$ .each()函数 我在(松散地)理解这不是单个JSON对象,而是对象的JSON数组,但不了解第一个版本是否有效,第二个版本为什么不起作

  • 如何迭代对象及其子对象的属性?我在中使用了,但无法获取歌曲信息:/

  • 我试图在Angular 2 Alpha 28中做一些事情,并且对字典和有问题。 我在TypeScript中有一个界面,如下所示: 在JavaScript中,这将转换为具有数据的对象,该对象可能看起来像这样: 我想重复一下,并尝试了以下方法: 但是,以下任何一项都不起作用: 在所有情况下,我都会收到错误,例如或 我错过了什么?这再也不可能了吗?(第一个语法在Angular 1. x中工作)或者迭代对