var arr = [1,23,45,33,23,2,2,2,2,2,2,2]
输出出现次数最多的元素和出现的次数。
法1:
function maxCountElement(arr) {
var obj={};
for(var i=0;i<arr.length;i++){
var key=arr[i];
console.log(key,)
if(obj[key]){
console.log(obj)
obj[key]++;
}else{
console.log(obj)
obj[key]=1;
}
}
var maxCount=0;
var maxElement=arr[0];
for(var key in obj){
if(maxCount<obj[key]){
maxCount=obj[key];
maxElement=key;
}
}
return "该数组中出现次数最多的元素:"+maxElement+"出现了"+maxCount+"次";
}
法2:详见注释
function jishu(arr) {
let obj = {}
arr = arr.sort()
//将元素重排,使得相同元素相邻
//此时arr = [ 1,2,2,2,2,2,2,2,23,23,33,45 ]
for(var i=0; i<arr.length; ){
let num = 0;
for(var j=i; j<arr.length; j++){
if(arr[i]===arr[j]){
num++
}
}
obj[arr[i]] = num
i += num ;
}
//此时obj为:{ '1': 1, '2': 7, '23': 2, '33': 1, '45': 1 }
let valArr = []
for (key in obj) {
valArr.push(obj[key])
valArr.sort((a,b)=>{
if (a<b) return 1
else return -1
})
}
//obj的属性值作为一个新数组,找出这个新数组的最大值
let max = valArr.shift()
for(key in obj){
if( obj[key] == max ){
console.log("出现最多的元素:",key," 出现的次数:",max)
}
}
//打印最大值(即元素最多出现次数)和其对应的元素
}