zoukankan      html  css  js  c++  java
  • 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)
    复制代码
     
     
  • 相关阅读:
    管理中的“变”与“不变”
    软件项目需求分析与管理的十大疑问
    小商家也要有O2O思维
    互联网时代CIO生存法则
    浅谈项目经理与部门经理之间的关系
    沃尔玛:“最后一公里”的致命伤
    大数据分析案例:永远别忘记天气这个变量
    IT项目中的6类知识转移
    C
    linu入门
  • 原文地址:https://www.cnblogs.com/hao-1234-1234/p/11801254.html
Copyright © 2011-2022 走看看