• js 数组去重求和 (转载)


    方法一:js数组id去重,value值相加问题

    来源:https://www.jianshu.com/p/8f79e31b46ed

        // js
        let arr = [
          {
            id: 1,
            value: 5
          },
          {
            id: 2,
            value: 3
          },
          {
            id: 3,
            value: 4
          },
          {
            id: 1,
            value: 3
          },
          {
            id: 2,
            value: 3
          }
        ];
    
        let newArr = [];
        arr.forEach(el=> {
          const res = newArr.findIndex(ol=> {
            return el.id === ol.id;
          });
          if (res!== -1) {
            newArr[res].value = newArr[res].value +  el.value;
          } else {
            newArr.push(el);
          }
        });
      
     
    问题:原来的数组arr中的数据也改变了。怎么做才能让原来的数组保持不变呢?
     
    来源https://www.cnblogs.com/juneling/p/9149969.html
    适用 多层 数组嵌套的深拷贝
    var ary2 = JSON.parse(JSON.stringify(ary1));
      //此方法适用于Oject的深度拷贝,因为Array属于Oject类型,所以也适用于此处;
      //需要注意的是:作为Oject的深度拷贝时,要复制的function会直接消失,所以这个方法只能用在单纯只有数据的对象。
     

     

    方法二:js数组去重

    来源:https://www.cnblogs.com/jlyuan/p/11530877.html

    1.基本数据类型数据去重

     var list = [1, 2, 1, 3, 2, 2,4]
     var res = list.filter((e,i)=>list.indexOf(e)==i)
     console.log(res)

    2.引用数据类型去重(实际开发中比较常见)

    复制代码
    var list = [{id:110,name:"java"},{id:111,name:"javascript"},{id:110,name:"java"}]
    var res = []
    // 实现思路:遍历list数组,如果不存在res数组中,就添加到res
    list.forEach(item=>{
      let flag = res.some(e=>{
        if(item.id === e.id){
          return true;
        }
      })
      if(!flag){
        res.push(item)
      }
    })
    
    console.log(res)
    复制代码
     
     
  • 相关阅读:
    关于Oracle数据库字符集
    NK3C:关于svg文件使用
    NK3C:异常处理(前端)
    关于返回值问题
    NK3C开发要点
    velocity模板使用建议
    样本随机抽样、局号抽样逻辑
    样本回收逻辑
    NKUI框架使用
    解决chrome,下载在文件夹中显示,调用错误的关联程序
  • 原文地址:https://www.cnblogs.com/hao-1234-1234/p/11801254.html
Copyright © 2020-2023  润新知