2016-11-18 50 views
0

我有我需要返回3个值的最高出现次数的javascript数组。可以说我们有这样一个数组。在javascript数组中查找出现次数最多的3个值。我只需要最多发生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返回3个值(在本例中为4,5和6)。

希望是有道理的。

在此先感谢。

+0

有没有这样的事,作为一个jQuery的阵列,这是一个JavaScript数组 –

+0

好吧,更正:) –

+0

你可以检查[这个问题](HTTP://计算器。 com/questions/5658547/is-there-any-way-to-count-of-a-jquery-array) –

回答

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); 
+0

看起来像 这就是我要的。我会检查它并让你知道。谢谢:) –

+0

就是这样。答复接受。感谢你的付出! –

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

相关问题