• javascript判断数组中元素的重复值个数


    var arr = [23,23,12,21,45,35,21,23],
        i = 0, maxI,
        item = {};
    arr.sort(function(x,y){return x - y;});
    for(i = 0; maxI = arr.length, i < maxI; i +=1){
        var key = arr[i], obj = {};
        
        if(item[key]){
            item[key].count++;
        }else{
            obj.value = arr[i];
            obj.count = arr[i] == arr[i+1]? 2: 1;
            item[key] = obj;
        }
        if(arr[i] == arr[i+1]){
            arr.splice(i+1,1);
        }
        
    }
    JSON.stringify(item);//"{"12":{"value":12,"count":1},"21":{"value":21,"count":2},"23":{"value":23,"count":3},"35":{"value":35,"count":1},"45":{"value":45,"count":1}}"

    数组arr为无序数组

      先对数组arr进行排序 Array.prototype.sort

      排序后的arr顺序为从小到大,所以如果值是重复的,那一定是相邻的

      for循环判断(每次循环重新计算数组arr的长度)

        如果item[arr[i]]存在,则执行item[arr[i]].count++;

        如果item[arr[i]]不存在,将obj赋值;

          obj.value为arr[i];

          判断相邻是两个元素值是否相等

            如果相等  obj.count设值为2  arr.splice(i+1,1);//从数组arr中删除元素,元素索引位置为i+1,删除个数为1;

            如果不相等  obj.count设值为1

          item[arr[i]]赋值为obj;

        

     1 var arr = [1, 2, 3, 4, 5, '1', '2', '4', '1', true, true, false, false, true, false, 0, 0, 1], maxRepeatItem;
     2         
     3        
     4 
     5         var hash = {};//利用hash 来记录次数
     6         var m = 1; //现在的最大次数
     7         var trueEl = [];//最大的元素,可能出现不止一个最大元素,所以为数组
     8         for (var i = 0, len = arr.length; i < len; i++) {
     9             var el = arr[i];
    10             var uniqueEl = typeof (el) + el; // 为了区分 1 和 '1'
    11             if (!hash[uniqueEl]) {    //利用对象的hash检验是否元素重复
    12                 hash[uniqueEl] = 1;
    13             }else{
    14                 hash[uniqueEl]++;
    15             }       
    16             if (hash[uniqueEl] == m ) {             
    17                 trueEl.push(el);         //把当前最大次数的元素放到数组里
    18             } else if (hash[uniqueEl] > m) {
    19                 trueEl = [];           //清空数组
    20                 m = hash[uniqueEl];
    21                 trueEl.push(el);        
    22             }          
    23         }
    24         console.log( trueEl);
  • 相关阅读:
    【Linux】【Services】【Configuration】puppet
    【Linux】【Services】【Web】Haproxy
    【Linux】【Services】【Project】Haproxy Keepalived Postfix实现邮件网关Cluster
    【Linux】【Services】【Web】Nginx基础
    【Linux】【Services】【Project】Cobbler自动化装机
    【Linux】【Services】【Package】rpm包制作
    【Linux】【Services】【nfs】nfs安装与配置
    Bootstrap框架--DataTables列表示例--添加判断
    安全整改相关内容
    tomcat禁用PUT,DELETE等一些不必要的HTTP方法
  • 原文地址:https://www.cnblogs.com/sxshijingjing/p/6480315.html
Copyright © 2020-2023  润新知