• js 对 只包含简单类型数据的对象 为元素 组成的数组 进行去重


     1  /**
     2          * 对于由简单类型数据组成的对象为元素组成的数组进行去重操作
     3          * @params {Array} 需要去重的对象数组
     4          * @returns {Array} 去重后的对象数组
     5          */
     6         function distinct(sourceArray) {
     7 
     8             var resultArray = [];
     9             var i, j, currentSource, currentResult;
    10 
    11             for (i = 0; i < sourceArray.length; i++) {
    12 
    13                 currentSource = sourceArray[i];
    14 
    15                 if (resultArray.length === 0) {
    16                     resultArray.push(currentSource);
    17                     continue;
    18                 }
    19 
    20                 for (j = 0; j < resultArray.length; j++) {
    21 
    22                     currentResult = resultArray[j];
    23 
    24                     if (!compare(currentResult, currentSource)) {
    25                         resultArray.push(currentSource);
    26                     }
    27 
    28                 }
    29 
    30             }
    31 
    32             return resultArray;
    33 
    34             function compare(obj1, obj2) {
    35                 for (var prop in obj1) {
    36 
    37                     if (!obj1.hasOwnProperty(prop)) {
    38                         continue;
    39                     }
    40 
    41                     if (obj1[prop] !== obj2[prop]) {
    42                         return false;
    43                     }
    44 
    45                 }
    46 
    47                 return true;
    48             }
    49 
    50         }
    /**
    * 对于由简单类型数据组成的对象为元素组成的数组进行去重操作
    * @params {Array} 需要去重的对象数组
    * @returns {Array} 去重后的对象数组
    */
    function distinct(sourceArray) {

    var resultArray = [];
    var i, j, currentSource, currentResult;

    for (i = 0; i < sourceArray.length; i++) {

    currentSource = sourceArray[i];

    if (resultArray.length === 0) {
    resultArray.push(currentSource);
    continue;
    }

    for (j = 0; j < resultArray.length; j++) {

    currentResult = resultArray[j];

    if (!compare(currentResult, currentSource)) {
    resultArray.push(currentSource);
    }

    }

    }

    return resultArray;

    function compare(obj1, obj2) {
    for (var prop in obj1) {

    if (!obj1.hasOwnProperty(prop)) {
    continue;
    }

    if (obj1[prop] !== obj2[prop]) {
    return false;
    }

    }

    return true;
    }

    }
  • 相关阅读:
    js模板
    block,inline和inline-block概念和区别
    jquery parent和parents,children和find
    (CVE-2015-5254)ActiveMQ 反序列化漏洞复现
    办公系统致远OA漏洞
    CVE-2018-16509 GhostScript 沙箱绕过(命令执行)漏洞
    phpmyadmin-相关漏洞详解
    XXL-JOB(任务调度中心)-反弹getshell
    组策略(域和域服务的搭建)
    解决在NAT模式下物理机无法ping通虚拟机的问题
  • 原文地址:https://www.cnblogs.com/JosephBee/p/11322510.html
Copyright © 2020-2023  润新知