我有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个值。
希望这是有道理的。
提前致谢。
答案 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