查找模式';数组的类型?Javascript
好的,我只知道如何从阵列中获得一种模式。。 但是如果它们出现的次数相同,我想得到2、3或更多。 代码如下:查找模式';数组的类型?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.
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代码>
但我要寻找的是ifarray=[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])你能解释一下这些句子吗?“从阵列中获取一个模式”“获取模式=3,6”谢谢,哦,对不起!我想把“模式”转换成一个对象。这是我的对象:返回{max:max,mean:mean,median:median,min:min,mode:mode,range:range};所以我希望mode值进入object key(mode)@Nit,而不是一个副本。提供的链接要求每个数字的出现次数,而不是获取出现次数最多的数字。我希望将模式放入对象中,如下所示:返回{max:max,mean:mean,median:median,min:min,mode:[mode],range:range};那么,我如何从函数中选择模式呢?干杯该函数返回一个模式数组。这就是你想要的。是的,我知道。但是如何将数组放入我的对象,使其看起来像这样,而是返回{max:max,mean:mean,median:median,min:min,mode:[3,6],range:range};好的,我明白了!:)但是,现在的问题是,我把它作为一个字符串,,,我想把[3,6]作为数字,我怎样才能解决这个问题?干杯
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));