js:关于遍历数组中对象封装数据问题

有个数组如下结构:

    let a = [
       {0: '内容11', 1: '内容12', 2: '内容13', 3: '内容14', head: '头部1'} ,
       {0: '内容21', 1: '内容22', 2: '内容23', 3: '内容24', head: '头部2'} ,
       {0: '内容31', 1: '内容32', 2: '内容33', 3: '内容34', head: '头部3'} ,
    ]

怎么变成下面的结构

     let b = [
         {头部1: '内容11', 头部2: '内容21', 头部3: '内容31'},  
         {头部1: '内容11', 头部2: '内容21', 头部3: '内容31'},  
         {头部1: '内容11', 头部2: '内容21', 头部3: '内容31'},    
         {头部1: '内容14', 头部2: '内容24', 头部3: '内容34'},  
        ]

写了好久,总有问题,希望能解决。谢谢!

阅读 2.4k
2 个回答
// 你这期望值给的我也是看不懂 大致猜测是行变列

let a = [
    { 0: '内容11', 1: '内容12', 2: '内容13', 3: '内容14', head: '头部1' },
    { 0: '内容21', 1: '内容22', 2: '内容23', 3: '内容24', head: '头部2' },
    { 0: '内容31', 1: '内容32', 2: '内容33', 3: '内容34', head: '头部3' }
]

function transformList(arr) {
    if (!Array.isArray(arr)) return

    return arr.reduce((temp, item, i) => {
        Object.keys(item).forEach((key, j) => {
            if (key === 'head') return
            if (!temp[j]) temp[j] = {}

            temp[j][item.head] = item[key]
        })
        return temp
    }, [])
}

console.log(transformList(a))
// 打印
[ { '头部1': '内容11', '头部2': '内容21', '头部3': '内容31' },
  { '头部1': '内容12', '头部2': '内容22', '头部3': '内容32' },
  { '头部1': '内容13', '头部2': '内容23', '头部3': '内容33' },
  { '头部1': '内容14', '头部2': '内容24', '头部3': '内容34' } ]
新手上路,请多包涵

这种问题,当然是需要用高阶函数去遍历,然后造自己的结构。至于方法,可以用map,reduce大才小用了。

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