JS数组去重方方法解决业务场景(ES6)

108 阅读1分钟

最近发现日常处理数组的需求频率变多记录一下,如下数据结构进行数组去重,并完成每项中的奥特曼战力值累加,做一个去重统计,要相信光啊。

 let arr = [                {id:1,name:'泰罗奥特曼',forceVal:49},                {id:2,name:'佐菲奥特曼',forceVal:59},                {id:3,name:'赛文奥特曼',forceVal:20},                {id:4,name:'迪迦奥特曼',forceVal:70},                {id:1,name:'泰罗奥特曼',forceVal:55},                {id:3,name:'赛文奥特曼',forceVal:73},                {id:2,name:'佐菲奥特曼',forceVal:69},                {id:3,name:'赛文奥特曼',forceVal:42},                {id:2,name:'佐菲奥特曼',forceVal:81},                {id:5,name:'杰克奥特曼',forceVal:42},                {id:1,name:'泰罗奥特曼',forceVal:70},                {id:5,name:'杰克奥特曼',forceVal:70},                {id:4,name:'迪迦奥特曼',forceVal:70},          ]

然后第一想法就是根据id去重,然后累加每一个奥特曼重复项的战力值获得奥特曼大集合。

noRepeatAdd(arr,id,val) {      if (!Array.isArray(arr)) {        return arr;      }      if (arr.length == 0) {        return [];      }      let newArrange=  arr.reduce((pre, cur) => {        let findData = pre.find(Ultraman => cur[id] == Ultraman[id] && cur.key == Ultraman.key)        // 查到和累计后的数组相同的做处理        if (findData) {          findData[val] = findData[val] + cur[val]        } else {          //不要直接在原来的对象修改,新建对象          let newItem = JSON.parse(JSON.stringify(cur))          pre.push(newItem)        }        return pre      }, [])  console.log("newArrange",newArrange)    },

封装了个方法直接回调回M78星云好了。

 this.noRepeatAdd(arr,'id','forceVal')

得到结果!!!溯啊~~~~

随笔记录