鍍金池/ 問答/HTML/ 一個(gè)數(shù)組問題重復(fù)值合并問題

一個(gè)數(shù)組問題重復(fù)值合并問題

const ary = [{
    code: 1,
    num: 20,
}, {
    code: 1,
    num: 10,
}, {
    code: 2,
    num: 15,
}]
// 怎樣得出下面結(jié)果?
const ary = [{
    code: 1,
    num: 30,
}, {
    code: 2,
    num: 15,
}]
回答
編輯回答
瘋子范

new Set(arr)

2018年9月14日 18:40
編輯回答
挽青絲

學(xué)習(xí)借鑒 JS實(shí)現(xiàn)數(shù)組去重方法總結(jié)(六種方法)
鏈接描述

2018年9月21日 04:40
編輯回答
萌小萌
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)
2018年2月10日 17:10
編輯回答
兔寶寶
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);
}
2017年12月18日 17:49
編輯回答
執(zhí)念
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)
2018年5月24日 19:38