【总结】从一个数组中找出重复最多的元素,并统计重复个数

  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));
 
原文地址:https://www.cnblogs.com/bluefantasy728/p/5668422.html