js如何做出数据转换?

Banshee
  • 72

原数组:

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该如何转换啊?

回复
阅读 152
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 思否「问答」打卡,欢迎正在阅读的你也加入。
你知道吗?

宣传栏