javascript - 将数组与对象转换

标签 javascript arrays object

我有一个包含数据的数组:

const data = [
  {
    groupName: 'groupName1',
    types: [
      {
        name: 'name1',
        displayName: 'displayName1'
      },
      {
        name: 'name2',
        displayName: 'displayName2'
      },
    ]
  },
  {
    groupName: 'groupName2',
    types: [
      {
        name: 'name3',
        displayName: 'displayName3'
      },
      {
        name: 'name4',
        displayName: 'displayName4'
      },
    ]
  },
]

我需要转换此数组,以便将额外的 groupName 字段添加到每个对象中。输出应该是一个包含对象的数组,如下所示:

const resultData = [
  {
    groupName: 'groupName1',
    name: 'name1',
    displayName: 'displayName1'
  },
  {
    groupName: 'groupName1',
    name: 'name2',
    displayName: 'displayName2'
  },
  {
    groupName: 'groupName2',
    name: 'name3',
    displayName: 'displayName3'
  },
  {
    groupName: 'groupName2',
    name: 'name4',
    displayName: 'displayName4'
  },
]

我尝试通过map数组方法来实现

const data = [{"groupName":"groupName1","types":[{"name":"name1","displayName":"displayName1"},{"name":"name2","displayName":"displayName2"}]},{"groupName":"groupName2","types":[{"name":"name3","displayName":"displayName3"},{"name":"name4","displayName":"displayName4"}]}]

const resultData = data.map((item) => {
  item.types.map((item1) => {
    return {
      ...item1,
      groupName: item.groupName
    }
  })

  return item
})

console.log(resultData)

但这并没有返回我需要的数组。请告诉我如何转换这个数组以使每个对象都具有正确的结构?预先感谢您!

最佳答案

将外部Array.map()调用替换为Array.flatMap()以创建平面数组,并返回内部map调用的结果,而不是原始项目。

const data = [{"groupName":"groupName1","types":[{"name":"name1","displayName":"displayName1"},{"name":"name2","displayName":"displayName2"}]},{"groupName":"groupName2","types":[{"name":"name3","displayName":"displayName3"},{"name":"name4","displayName":"displayName4"}]}]

const resultData = data.flatMap(({ types, groupName }) => 
  types.map(item => ({
    ...item,
    groupName
  }))
)

console.log(resultData)

关于javascript - 将数组与对象转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69194904/

相关文章:

javascript - 带有 CORS 的 Webix ajax 可以在除 IE 之外的任何地方工作

javascript - 使用一个 JavaScript 验证多个表单

arrays - 计算特定整数在数组中的出现次数

c++ - 类对象指针不会分配给字符串

java - 使用用户输入创建新对象 [JAVA]

javascript - 如何从内部对象访问外部对象的属性?

javascript - 如何防止 Dreamweaver 运行本地代码?

javascript - 单击对象时的 HTML 选择

php - 多维数组中的 Foreach

javascript - 将 JSON 对象转换为数组?阅读说明