在数组中查找大多数和第二个最受欢迎的元素

时间:2017-05-03 07:46:00

标签: javascript arrays algorithm search

var elements = ['1','2','2','2','3','4','3'];

我希望一次性找到最受欢迎和最受欢迎的元素。

这里' 2'发生三次' 3'发生两次。

结果将是 -

popular = ['2', '3']  

1 个答案:

答案 0 :(得分:2)

这可能是可能的解决方案之一

var elements = ['1','2','2','2','3','4','3']; // input array

// create object with frquency count
var obj = {};
for (var i = 0; i < elements.length; i += 1) {
    if (elements[i] in obj) {
        obj[elements[i]] += 1;
    } else {
        obj[elements[i]] = 1;
    }
}
// map obj to array
var array=[];
for(a in obj){
 array.push([a,obj[a]])
}

// sort the array
array.sort(function(a,b){return a[1] - b[1]});

array.reverse();

// for first two popular elements
var result = [];
result[0] = array[0][0];
result[1] = array[1][0];

console.log(result);