数据转换:将数组对象中某个值相同的对象合并为一个新的对象

原数据:
在这里插入图片描述
转换为:
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    let beforeData=[
        { name: "tony", id: "1", age: "20" },
        { name: "jack", id: "2", age: "21" },
        { name: "tony", id: "3", age: "50" },
        { name: "jack", id: "4", age: "10" },
        { name: "mark", id: "5", age: "22" },
        { name: "mark", id: "6", age: "40" }
      ]
    let tempArr=[],afterData=[]
    for(let i =0;i<beforeData.length;i++){
      // console.log(beforeData[i])
      console.log(tempArr.indexOf(beforeData[i].name))
      //检查tempArr是否存在beforeData的name值,为-1不存在
      if(tempArr.indexOf(beforeData[i].name)==-1){
        //不存在此name,因此加入数据
        afterData.push({
          name:beforeData[i].name,
          data:[beforeData[i]]
        })
        //同时tempArr加入相应的name值
        tempArr.push(beforeData[i].name)
      }else{
        //tempArr存在name值
        for(let j=0;j<afterData.length;j++){
          // console.log(afterData[i])
          if(afterData[j].name==beforeData[i].name){
            afterData[j].data.push(beforeData[i])
            break
          }
        }
      }
    }
    console.log(beforeData)
    console.log(afterData)
  </script>
</body>

</html>

版权声明:本文为ScumStudy原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。