1、找出数组里元素最多的第二项
题目:var array = ['aa','bb','bb','cc','cc',"cc"];
思路
1、遍历数组,将重复的冤死进行计数,村委对象;
2、将每个元素的值放到新的数组中,通过 sort 将数组的元素进行排序;
3、获取数组的第二个值,然后遍历循环对象,根据值与对象的匹配度,就可以找出出现元素最多的第二个值
var array = ['aa','bb','bb','cc','cc',"cc"];
//aa 1
//bb 2
//cc 3
//思路
//1、遍历数组,将重复的冤死进行计数,村委对象;
//2、将每个元素的值放到新的数组中,通过 sort 将数组的元素进行排序;
//3、获取数组的第二个值,然后遍历循环对象,根据值与对象的匹配度,就可以找出出现元素最多的第二个值
function test(arr){
var map = {};
//1.遍历数组,将数组每个元素放入 map对象中
for(var i=0;i<arr.length;i++){
var v = arr[i];
var counts = map[v];
//如果这个元素存在,对应的值计数为1,然后累次计数
if(counts) {
map[v] +=1;
} else{
map[v] = 1
}
}
console.log(map);//{aa: 1, bb: 2, cc: 3}
//2.将对象的值放入到新的数组中 arr2
var arr2 =[];
for (var g in map){
arr2.push(map[g])
}
console.log(arr2);//[1, 2, 3]
//3.将 arr2 数组进行从大到小排序
var arr3 = arr2.sort(function(a,b){
return b-a
})
console.log(arr3);//[3, 2, 1]
//获取 arr3数组第二个值
var value = arr3[1];
//通过数组的值找出对应的键名
for(var key in map){
if(map[key] === value){
return key;
}
}
}
test(array)//"bb"