为了账号安全,请及时绑定邮箱和手机立即绑定

一个数组问题重复值合并问题

一个数组问题重复值合并问题

慕娘9325324 2019-03-12 13:15:03
const ary = [{    code: 1,    num: 20,}, {    code: 1,    num: 10,}, {    code: 2,    num: 15,}]// 怎样得出下面结果?const ary = [{    code: 1,    num: 30,}, {    code: 2,    num: 15,}]
查看完整描述

5 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

const ary = [{

  code: 1,

  num: 20

}, {

  code: 1,

  num: 10

}, {

  code: 2,

  num: 15

}]


function merge (list) {

  let result = []

  let cache = {}

  list.forEach(item => {

    let key = item.code

    let index = cache[key]

    if (index !== undefined) {

      result[index].num += item.num

    } else {

      result.push(Object.assign({}, item))

      cache[key] = result.length - 1

    }

  })

  return result

}


merge(list)


查看完整回答
反对 回复 2019-04-04
?
慕森王

TA贡献1777条经验 获得超3个赞

function merge(arr) {

  let res = {};

  for(let item of arr) {

    if(res[item.code]) res[item.code].num += item.num;

    else res[item.code] = { code: item.code, num: item.num };  // Avoid modifying the original object.

  }

  return Object.values(res);

}


查看完整回答
反对 回复 2019-04-04
?
神不在的星期二

TA贡献1963条经验 获得超6个赞

var abc=[{

        code: 1,

        num: 20,

    }, {

        code: 1,

        num: 10,

    }, {

        code: 2,

        num: 15,

    }]

    var result={};

    for(i=0;i<abc.length;i++){

        if(result[abc[i].code]){

            result[abc[i].code]+=abc[i].num;

        }else{

            result[abc[i].code]=abc[i].num;

        }

    }

    var keyvalue=[];

    for(var key in result){

        keyvalue.push({code:key,num:result[key]})

    }

    console.log(keyvalue)


查看完整回答
反对 回复 2019-04-04
?
森栏

TA贡献1810条经验 获得超5个赞

new Set(arr)


查看完整回答
反对 回复 2019-04-04
  • 5 回答
  • 0 关注
  • 456 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信