首页 > 解决方案 > 删除对象数组中的对象键和值

问题描述

我的代码 =

这是我的示例数据。

const songs = [
  {
    "title": "Just Once",
    "asset_id": "1f7e0fd8-db21-4c28-b9e1-eb0295af198c",
    "sort": 1,
    "performers": [
      {
        "last_name": "John",
        "first_name": "Doe",
        "group": {
          "group_id": "1e5f73fa-ffe8-4c70-a83b-84e7bf985b25",
          "dept_short_name": "PAO",
          "dept_long_name": "Public Affairs Office"
        },
        "email": "john@doe.com"
      }
    ]
  }
]

    const newTest= songs.map(( {...song} ) => (
        song.performers.map(({...group}) => group_id = group.group_id)
    ))

我得到了这个结果:

在此处输入图像描述

我应该只从组对象中删除dept_short_namedept_long_name并且group_id将保留,歌曲的其余数据应保持不变。

这应该是结果:

[
  {
    "title": "Just Once",
    "asset_id": "1f7e0fd8-db21-4c28-b9e1-eb0295af198c",
    "sort": 1,
    "performers": [
      {
        "last_name": "John",
        "first_name": "Doe",
        "group_id":"1e5f73fa-ffe8-4c70-a83b-84e7bf985b25"
        "email": "john@doe.com"
      }
    ]
  }
]

标签: javascriptreactjsecmascript-6redux

解决方案


您需要在两个地图中重新创建一个对象。

const songs = [{"title":"Just Once","asset_id":"1f7e0fd8-db21-4c28-b9e1-eb0295af198c","sort":1,"performers":[{"last_name":"John","first_name":"Doe","group":{"group_id":"1e5f73fa-ffe8-4c70-a83b-84e7bf985b25","dept_short_name":"PAO","dept_long_name":"Public Affairs Office"},"email":"john@doe.com"}]}]

const updated = songs.map(({
  performers,
  ...song
}) => ({ ...song, // recreate song object
  performers: performers.map(({
    group: {
      group_id
    },
    ...performer
  }) => ({ ...performer, // recreate performer object
    group_id
  }))
}))

console.log(updated)


推荐阅读