请问一下下面的数组对象结构重组应该怎么操作一下

var arr =

 [
  {value: "颜色", detail: ["红"]},
  {value: "尺寸", detail: ["29cm", "30cm"]}
 ] 

怎么操作一下转成

 [
  {颜色:红, 尺寸: 29cm},
  {颜色:红, 尺寸: 30cm},
 ]
阅读 1.4k
2 个回答
arr.reduce((res, item) => {
    return item.detail.reduce((list, ci) => {
        let nobj = {[item.value]: ci}
        let narr = res.length ? res.map(r => ({...r, ...nobj})) : [nobj]
        return list.concat(narr)
    }, [])
}, [])
 arr.reduce(
  (acc, cur) => {
    const curArr = cur.detail.map((item) => ({ [cur.value]: item }))
    if (acc.length) {
      const next = []
      acc.forEach((x) => {
        curArr.forEach((y) => {
          next.push({ ...x, ...y })
        })
      })
      return next
    }
      return curArr
  },
  []
)

相关知识可以搜下 笛卡尔乘积

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题