• 数组嵌套对象,将相同属性去重,对应的某个属性值合并


    var data = [
        { province: 1, index:1},
        { province: 2, index:3},
        { province: 1, index:3},
        { province: 2, index:2}
    ]

     想要得到的格式

    { province: 1, index:4},
    { province: 2, index:5}

    实现过程

    方法一:

    console.log(editArr(data, 'province', 'index'));
    function editArr(data, repeat, merge){ // repeat: 去重的key // merge: 合并的key var currArr = [] var newArr = [] data.forEach((item,i)=>{ if(currArr.indexOf(data[i][repeat]) == -1){ newArr.push({ [repeat]: data[i][repeat], [merge]: data[i][merge] }) currArr.push(data[i][repeat]) }else{ newArr.forEach(subItem=>{ if(subItem[repeat] == data[i][repeat]){ subItem[merge] += data[i][merge] } }) } }) return newArr }

    方法二:


    function
    mergeArr(arr){ var newArr=[]; arr.forEach(item=>{ var dataItem =item if(newArr.length>0){ var filterValue = newArr.filter(v=>{ return v.province == dataItem.province }) if(filterValue.length>0){ newArr.forEach(n=>{ if( n.province ==filterValue[0].province){ n.index = Number(filterValue[0].index) + Number(dataItem.index) } }) }else{ newArr.push(dataItem) } }else{ newArr.push(dataItem) } }) return newArr }

    调用

    mergeArr(data)
    

      

  • 相关阅读:
    17.10.13
    17.10.12
    17.10.11
    17.10.10
    17.10.05
    17.10.04
    17.10.03
    17.10.02
    17.10.01
    17.9.29
  • 原文地址:https://www.cnblogs.com/xhrr/p/11990900.html
Copyright © 2020-2023  润新知