zoukankan      html  css  js  c++  java
  • 【总结】从一个数组中找出重复最多的元素,并统计重复个数

    1. 通过json,将数组中的值都传给json中的键,利用json中的键是不能重复的性能,同时如果遇到重复的键,那就让这个键的值自增1,这样就能统计出重复次数
    2. 上面的方法可以得出一个json,但是还不够,因为无法比较json里的键或者值的大小,就要再将Json里的每组数据组成一个个小的json装到一个数组中,将统计的数量赋给每个json中的值,利用数组的sort的比较函数进行排序即可
     
    function myMaxElement(arr){
    var json = {};
    for (var i=0; i<arr.length; i++) {
    if(json[arr[i]]){ //这个思想很重要,在将数组中元素放入json中时判断json的键是否已经出现过,如果没有,那让这个键赋值1,如果已经出现,则让它的值自增1
    json[arr[i]]++;
    }else{
    json[arr[i]] = 1;
    }
    }
    var newArr = [];
    for (var name in json){
    var newJson = {};
    newJson.a = name; //循环json,将每组数据的键传给新json的a,值传给新json的b
    newJson.b = json[name];
    newArr.push(newJson);//再将这个新json添加到新数组中,这样新数组中都是一个个小json,每个json都有2组元素,它们的键分别是a和b
    }
     
    newArr.sort(function(n1,n2){
    return n1.b - n2.b; //通过比较函数,对比每个小json中b的大小将每个小json排序
    });
    return newArr[newArr.length-1].a + ':' + newArr[newArr.length-1].b; //得到出现最多的键,和它出现的次数
    }
    var arr = [1,4,5,6,3,4,6,6,6,4,6,6,4,3,2,3,4,5,3,4,7,8,9,7,8,6,5,4];
    console.log(myMaxElement(arr));
     
  • 相关阅读:
    Redis的分布式锁
    Redis的雪崩、击穿、穿透
    psr规范
    Mysql的联(复)合索引
    nginx的location配置(二)
    nginx的location规则(一)
    easyswoole中队列的使用
    第三章 文件I/O
    移动语义及拷贝优化
    PHP对接tdzntech.com云平台电子免费券程序
  • 原文地址:https://www.cnblogs.com/bluefantasy728/p/5668422.html
Copyright © 2011-2022 走看看