在javascript数组中查找出现次数最多的3个值。我最多只需要3次

时间:2016-11-18 01:34:53

标签: javascript jquery

我有javascript数组,其中我需要返回3个具有最高出现次数的值。假设我们有这样的数组。

[1,3,4,5,2,3,4,5,6,7,8,5,4,5,3,5,6,7,3,5,6,5,6,3,4,5,6,6]

1 - 1次 2 - 1次 3 - 5次 4 - 4次 5 - 8次 6 - 6次 7 - 2次 8 - 1次

如何使用jQuery返回大多数事件(在本例中为4,5和6)的3个值。

希望这是有道理的。

提前致谢。

2 个答案:

答案 0 :(得分:0)

var arr = [1,3,4,5,2,3,4,5,6,7,8,5,4,5,3,5,6,7,3,5,6,5,6,3,4,5,6,6];

var x = arr.reduce(function(result, item) {
    result[item] = result[item] || {count:0};
    ++result[item].count;
    return result;
}, {});
var y = Object.keys(x).sort(function(a, b) {
    return x[b].count - x[a].count;
}).slice(0,3);
console.log(y);

答案 1 :(得分:0)

var arr = [5, 5, 5, 2, 2, 2, 2, 2, 9, 4,1,1,2,1,1,1,3,3,3,3,3];
var counts = {};

for(var i = 0; i< arr.length; i++) {
    var num = arr[i];
    counts[num] = counts[num] ? counts[num]+1 : 1;
}
console.log(counts);// return object which return key value pair count like  Object {2: 5, 4: 1, 5: 3, 9: 1} 2 five time,4 one time, 5 three time in array
var keysSorted = Object.keys(counts).sort(function(a,b){return counts[a]-counts[b]})
alert(keysSorted); 

alert(keysSorted); //this is asc order, last 3 values are max occurance