【问题标题】:Object is not getting returned instead main array return没有返回对象,而是返回主数组
【发布时间】:2020-07-12 15:19:00
【问题描述】:

我在使用 map 函数从数组返回对象时遇到问题。

我有一个对象数组,看起来像

const data={
"Sessions" : 
[{"id" : "2", "Name":{"firstName": "jonas", "lastName":"parker"}}
, {"id" : "3", "Name":{"firstName": "peter", "lastName":"donl"}}, {"Id": 
1,"Name":{"firstName": "xyz", "lastName":"abc"}}]}

现在,我正在尝试返回对象

const active = data?.Sessions ?? [].map((session) => {({label: 
    `${session.Name.firstName}`, value: `${session.Name.lastName}`}))

所以,我期待它返回一个对象数组,其中包含标签和名称作为键及其各自的值。

所以,我得到了 data?.Sessions 数组作为回报,即我用于迭代的原始对象数组。

谁能帮我解决这个问题?

谢谢。

【问题讨论】:

  • 您的 data 数组语法不正确。请提供正确的数组

标签: javascript arrays reactjs


【解决方案1】:

只需在 data.sessions 上使用 Array#map。您当前正在使用 null 合并运算符,以便仅在会话不为 null 或未定义时调用 map,并且在空数组上调用。

const active = data?.Sessions.map((session) => ({label: `${session.Name.firstName}`, value: `${session.Name.lastName}`}));

【讨论】:

    【解决方案2】:

    您在活动变量中使用Nullish Coalescing Operator

    这意味着活动变量将获得左侧值data?.Sessions,因为它不是空值或未定义。

    此外,您正在遍历一个空数组:赋值右侧的[].map

    试试这个:

    const active = data?.Sessions.map(function(session){
        return {
                label: session.Name.firstName, 
                value: session.Name.lastName
        }
    })```
    

    【讨论】:

      【解决方案3】:

      这是一个标签和值的数组:

      const data={
      "Sessions" : 
      [{"id" : "2", "Name":{"firstName": "jonas", "lastName":"parker"}}
      , {"id" : "3", "Name":{"firstName": "peter", "lastName":"donl"}}, {"Id": 1,"Name":{"firstName": "xyz", "lastName":"abc"}}]}
      
      let active = (data?.Sessions ?? []).map((session) => ({label: session.Name.firstName, value: session.Name.lastName})
      )
      
      console.log(active)

      【讨论】:

        猜你喜欢
        • 2019-10-13
        • 2019-11-27
        • 2019-06-12
        • 2016-08-08
        • 2020-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-28
        相关资源
        最近更新 更多