js如何做出数据转换?

原数组:

arr1 =[
  proId: "904811010068582400"
  proName: "建筑"
  user: [
   {id: "421080418086027265", name: "test01", dep: null},
   {id: "421080418086027266", name: "test02", dep: null}
  ]
]

前端想要将原数组转换成这种数据:

arr2= [
 {
   proId: "904811010068582400",
   proName: "建筑",
   id: "421080418086027265", 
   name: "test01", 
   dep: null
 },
 {
   proId: "904811010068582400",
   proName: "建筑",
   id: "421080418086027266", 
   name: "test02", 
   dep: null
 }
]

请问使用js该如何转换啊?

阅读 1.7k
2 个回答
const arr1 = [
    {
        proId: "904811010068582400",
        proName: "建筑",
        user: [
            { id: "421080418086027265", name: "test01", dep: null },
            { id: "421080418086027266", name: "test02", dep: null }
        ]
    }
];

// 这就句
const r = arr1.flatMap(({ proId, proName, user }) => user.map(u => ({ proId, proName, ...u })));

console.log(r);

已参与了 SegmentFault 思否「问答」打卡,欢迎正在阅读的你也加入。

你的arr1是个啥,应该是这个吧

var arr1 =[
    {
      proId: "904811010068582400",
      proName: "建筑",
      user: [
       {id: "421080418086027265", name: "test01", dep: null},
       {id: "421080418086027266", name: "test02", dep: null}
      ]
    }
]
var arr2 = arr1.reduce((res, item) => {
    let obj = {proId: item.proId, proName: item.proName}
    return res.concat(item.user.map(citem => ({...obj, ...citem})))
}, [])
已参与了 SegmentFault 思否「问答」打卡,欢迎正在阅读的你也加入。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题