查找模式';数组的类型?Javascript

查找模式';数组的类型?Javascript,javascript,arrays,Javascript,Arrays,好的,我只知道如何从阵列中获得一种模式。。 但是如果它们出现的次数相同,我想得到2、3或更多。 代码如下: var frequency = {}; // array of frequency. var maxFreq = 0; // holds the max frequency. for (var i in array) { frequency[array[i]] = (frequency[array[i]] || 0) + 1; // increment frequency.

好的,我只知道如何从阵列中获得一种模式。。 但是如果它们出现的次数相同,我想得到2、3或更多。 代码如下:

var frequency = {};  // array of frequency.
var maxFreq = 0;  // holds the max frequency.

for (var i in array) {
    frequency[array[i]] = (frequency[array[i]] || 0) + 1; // increment frequency.

    if (frequency[array[i]] > maxFreq) { // is this frequency > max so far ?
        maxFreq = frequency[array[i]];  // update max.
        mode = array[i];          // update result.
    }
}
现在,如果我有一个
array=[3,8,3,6,1,2,9]
我得到
mode=3

但我要寻找的是if
array=[3,6,1,9,2,3,6,6,3,1,-8,7]

我想得到
模式=3,6

问题并没有说明如何获取模式,但如果我们希望将它们放入数组中,我们可以如下更改代码:

函数getModes(数组){ var frequency={};//频率数组。 var maxFreq=0;//保存最大频率。 var模式=[]; for(数组中的变量i){ 频率[阵列[i]=(频率[阵列[i]]| | 0)+1;//增加频率。 如果(frequency[array[i]]>maxFreq){//到目前为止这个频率是否大于max? maxFreq=frequency[array[i]];//更新最大值。 } } 用于(频率中的var k){ 中频(频率[k]==maxFreq){ 模式。推(k); } } 返回模式; }
警报(获取模式([3,6,1,9,2,3,6,6,3,1,-8,7])function modeCount(data) { let modecount = []; let valueArr = []; let dataSet = new Set(data); for (const iterator of dataSet) { const filteredNum = data.filter((num) => iterator === num); modecount.push({ mode: iterator, count: filteredNum.length }); } modecount.sort((a, b) => { return b.count - a.count; }); modecount.forEach(value => { if (value.count === modecount[0].count) { valueArr.push(value.mode); } }); return valueArr; } let ages = [3, 6, 1, 9, 2, 3, 6, 6, 3, 1, -8, 7] console.log(modeCount(ages));