var arr=[99,1,5,23,3,7,31,23,23,99,0,23,6,];
//对象存储数组元素和元素出现的个数
var number={};
//数组存储出现次数最多的元素
var MaxNumber=[];
//存储出现次数最多的元素的个数
var MaxNum=0;
for(var i=0;i<arr.length;i++){
if(!number[arr[i]]){
number[arr[i]]=1
}else{
number[arr[i]]++
}
if(number[arr[i]]>MaxNum){
MaxNum=number[arr[i]]
}
}
for(var item in number){
if(number[item] === MaxNum){
MaxNumber.push(item)
}
}
console.log('出现次数最多的元素.', MaxNumber);//23
console.log(number[MaxNumber]);//4
console.log(number);
第二种方法有小问题,如果有两个元素次数相同,那么谁在前面打印谁
function GetArrayMost(arr) {
var arrMap = new Map();
var key = arr[0],
value = 1;
arr.forEach((item, index) => {
if (arrMap.get(item) !== undefined) {
let num = arrMap.get(item);
arrMap.set(item, ++num);
} else {
arrMap.set(item, 1);
}
if (arrMap.get(item) > value) {
key = item;
value = arrMap.get(item);
}
});
return [key, value];
}
var arr = [33, 1, 3, 3, 6, 4, 22, 33, 99, 66, 33, 22, 3, 99, 99]
console.log(GetArrayMost(arr)[0]);//33
console.log(GetArrayMost(arr)[1]);//3