zoukankan      html  css  js  c++  java
  • 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配置YUM源(2020最新最详细)
    Linux系统安装Tomcat9(2020最新最详细)
    Linux系统安装JDK1.8(2020最新最详细)
    框架集项目-登录账户过期,如何回到登录主页!
    C# 以管理员方式运行程序
    C#/STM32 WAV转byte WAV数据格式
    C# base64 转 byte[]
    C# 截取屏幕图像
    emWin 学习笔记 —— 用VS2017打开emWin仿真包
    STM32 时钟配置的坑
  • 原文地址:https://www.cnblogs.com/sxshijingjing/p/6480315.html
Copyright © 2011-2022 走看看