zoukankan      html  css  js  c++  java
  • 数组对象的合并去重,常用方法

    前端处理数据的时候,常见的数组对象,合并并且去重,两个数据如下:

    let json1=[ {id:1,name:"aaa"}, {id:2,name:"bbb"}, {id:3,name:"ccc"}, ] let json2=[ {id:1,name:"aaa"}, {id:2,name:"bbb"}, {id:4,name:"ddd"}, ]

    方法一:

    双循环,遍历添加
    for (var obj in json1){//临时选择数据
    var includeThis = false;
    for(var dbj in json2){ //右侧table里的数据
    if(json1[obj].id==json2[dbj].id){
    includeThis=true;
    }
    }
    if(includeThis==false){
    json.push(storageArea[obj]);//把当前临时数据的这一条放到右侧table的数据里
    }
    }

    也可以先合并在去重
    let json = json1.concat(json2); //两个数组对象合并

    let newJson = []; //盛放去重后数据的新数组

    for(item1 of json){ //循环json数组对象的内

      let flag = true; //建立标记,判断数据是否重复,true为不重复

      for(item2 of newJson){ //循环新数组的内容

        if(item1.id==item2.id){ //让json数组对象的内容与新数组的内容作比较,相同的话,改变标记为false

          flag = false;

        }

      }

      if(flag){ //判断是否重复

        newJson.push(item1); //不重复的放入新数组。 新数组的内容会继续进行上边的循环。

      }

    }

    console.log("newJson",newJson);

    方法二    javascript 数组的高阶函数reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。

    单个数组对象去重
    let b = [{ id: '4', result: '第三' }, { id: '2', result: '第四' }, { id: '2', result: '第二' }]
    let d = []
    let hash = {}
    d = b.reduce((item, next) => {
    hash[next.id] ? '' : hash[next.id] = true && item.push(next)
    return item
    }, [])
    console.log(d, '看看看')

    用上面的两个数组对象来实现

    多个数组对象去重  
    let newDatas = [...this.json1, ...this.json2];
    let d = []
    let hash = {}
    d = newDatas.reduce((item, next) => {
       hash[next.id] ? '' : hash[next.id] = true && item.push(next)
       return item
    }, [])
    console.log(d);
  • 相关阅读:
    DirectX9:基础篇 第五章 绘制流水线
    他山之石:可以攻玉
    C89:论内存分配问题
    C89:关键字
    MFC:开头篇 介绍
    DirectX9:先导篇 数学基础
    模仿轮播图效果
    text选中后displa出label内容
    ASP.NET页面之间传递值的几种方式
    jquery-delay(),queue()
  • 原文地址:https://www.cnblogs.com/PotatosMe/p/14465147.html
Copyright © 2011-2022 走看看