我想創建一個函式,它將回傳頻率最高的數字(模式)。例如:如果陣列包含[10, 4, 5, 2, 4]輸出應該是4。如果有多個模式,我想回傳第一個出現在陣列中的那個(即[10,2,5,4,5,2,4]應該回傳2,因為它首先出現。如果沒有模式,我想回傳-1。陣列不會為空。下面是我的嘗試
function Mode(arr){
if(arr == undefined || arr.length == 0){
return
}
const number_to_frequency = {};
let number_with_overall_highest_frequency = 0;
let overall_highest_frequency = 0;
for(index in arr) {
const number = arr[index];
if(number_to_frequency[number]) {
number_to_frequency[number] = 1;
} else {
number_to_frequency[number] = 1;
}
let updated_frequency = number_to_frequency[number]
if(overall_highest_frequency < updated_frequency) {
number_with_overall_highest_frequency = number;
overall_highest_frequency = updated_frequency;
}
}
if(overall_highest_frequency == 1){
return -1
}
return number_with_overall_highest_frequency;
};
console.log(Mode([10,2,5, 4, 5, 2, 4])) //5
uj5u.com熱心網友回復:
如果您只需要它重復的第一個,您可以嘗試這種方法
const checkMode = (array = []) => {
const duplicated = array.find(value => array.filter(_value => value === _value).length > 1)
return duplicated >= 0 ? duplicated: -1
}
checkMode([10,2,5, 4, 5, 2, 4])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/510113.html
上一篇:在另一個字串中查找一個字串的出現
下一篇:計算時間間隔的演算法
