zoukankan      html  css  js  c++  java
  • 如何对数组对象进行去重?

    这个我是在网上找到然后进行了一下套入。

    直接拿来网上的例子吧 

    尊重原创  作者:白色橡树   地址:【原】js数组对象去重最简单的方法 - 白树 - 博客园 (cnblogs.com)

    let arr = [
    {
    mch_id:'ghx1',
    status: 1,
    type: 2
    },
    {
    mch_id:'awx2',
    status: 2,
    type: 3
    },
    {
    mch_id:'ghx1',
    status: 1,
    type: 2
    },
    {
    status: 1,
    type: 2,
    mch_id:'ghx1'
    }
    ]

    通过观察,我们可以发现该数组中的第1、3、4项其实是一样的,最初在谷歌找了几个方法最终都不太满意,比如会改变数组中对象原来的排序、数组去重失败等,后来经过多次尝试和实践,得出以下最简单的方法:

    1. 利用对象的键名无法重复的特点,我们可以新建一个临时对象来存储原数组中的对象子集的值,比如我的项目中mch_id是唯一的ID,然后设置的它为临时对象的键名,值为true即可,保证它的唯一性
    2. 通过判断对象的键名是唯一时,把对应的数组值添加到一个空数组中,最终得到一个去重后的数组对象
    3. 此方法不会改变数组对象原有的排序

    let arrUnique = function(arr){
    let result = {};
    let finalResult=[];
    for(let i=0;i<arr.length;i++){
    //利用对象的键名无法重复的特点,cpmch_id是唯一区别的属性值
    result[arr[i].mch_id] ? '' : result[arr[i].mch_id] = true && finalResult.push(arr[i]);
    }
    return finalResult;
    }

  • 相关阅读:
    图匹配板子
    线性基
    Berlekamp-Massey algorithm
    组合/概率/形式幂级数/多项式/集合幂级数的题
    费用流 Dijkstra 原始对偶方法(primal-dual method)
    UVA-12304
    二项式系数
    卡特兰数
    多项式模板
    工具
  • 原文地址:https://www.cnblogs.com/mmit/p/14370858.html
Copyright © 2011-2022 走看看