js将一维数组通过相同的id调整为二维数组

原创
2021/03/13 10:53
阅读数 2.5K

将一维数组通过相同的id调整为二维数组

1.接口返回的数据 

{
    "employees":[
        {
            "employee_id":2,
            "employee_part":"0%",
            "participation_id":3,
            "ratio":"5%"
        },
        {
            "employee_id":4,
            "employee_part":"0%",
            "participation_id":3,
            "ratio":"22%"
        },
        {
            "employee_id":5,
            "employee_part":"0%",
            "participation_id":3,
            "ratio":"10%"
        },
        {
            "employee_id":7,
            "employee_part":"0%",
            "participation_id":2,
            "ratio":"11%"
        }
    ]
}

2.修改返回数据

第一种情况,将相同的ID拿取出来,生成一个对象数组

实现代码

const employees = res.employees
        var newData = []
        employees.forEach(function(v, i) {
          var n
          for (var i = 0; i < newData.length; i++) {
            var t = newData[i]
            if (t.participation_id == v.participation_id) {
              n = t
              break
            }
          }
          if (!n) {
            n = { participation_id: v.participation_id, rows: [] }
            newData.push(n)
          }
          // delete v.ordernumber
          delete v.participation_id
          n.rows.push(v)
        })
        console.log(newData)

第2种情况,只生成一个二维数组,每列中都含有对应的id

实现代码

const employees = res.employees
        var arrayTwo = Object.values(employees.reduce((res, item) => {
          res[item.participation_id] ? res[item.participation_id].push(item) : res[item.participation_id] = [item]
          return res
        }, {}))
        console.log(arrayTwo)

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部