美文网首页
js合并数组对象中key相同的数据,并以此key生成新对象

js合并数组对象中key相同的数据,并以此key生成新对象

作者: 前端放弃师 | 来源:发表于2020-04-29 14:09 被阅读0次

    经常会遇到数据处理的情况,其实处理起来并不难,只是思维模式的问题,思考对了就很简单
    源数据格式

    let oldObj = [
      {id: 0, parentId: 'AA', type: "M"},
      {id: 1, parentId: 'AA', type: "M"},
      {id: 2, parentId: 'CC', type: "M"},
      {id: 3, parentId: 'AA', type: "M"},
      {id: 4, parentId: 'BB', type: "M"},
      {id: 5, parentId: 'AA', type: "M"},
      {id: 6, parentId: 'BB', type: "M"},
      {id: 7, parentId: 'AA', type: "M"},
      {id: 8, parentId: 'BB', type: "M"},
      {id: 9, parentId: 'CC', type: "M"},
      {id: 10, parentId: 'BB', type: "M"},
      {id: 11, parentId: 'CC', type: "M"}
    ]
    

    我们需要对源数据处理,根据相同parentId值合并id到一个数组中,并用parentId作为新对象的key,id的数组为value,即下面的格式:

    let newObj = {
      "AA":[1,3,5,7],
      "CC":[9,11],
      "BB":[6,8,10]
    }
    

    方法:

    let newObj = new Object;
    for(let i in oldObj){
      if(newObj[oldObj[i].parentId]){
        //新对象存在这个key
        newObj[oldObj[i].parentId].push(oldObj[i].id)
      }else{
        //新对象不存在这个key
        newObj[oldObj[i].parentId] = new Array;
      }
    }
    console.log(newObj)
    console.log(JSON.stringify(newObj))
    

    相关文章

      网友评论

          本文标题:js合并数组对象中key相同的数据,并以此key生成新对象

          本文链接:https://www.haomeiwen.com/subject/vcbgwhtx.html