Giả sử chúng ta cần viết một hàm nhận vào một mảng các giá trị chuỗi/số và trả về chỉ số của phần tử xuất hiện nhiều nhất. Chúng ta sẽ duyệt qua mảng để xây dựng một bản đồ tần suất (frequencyMap), sau đó từ bản đồ này trả về chỉ số của phần tử có tần suất cao nhất.
Mã thực hiện như sau:
Ví dụ
const arr1 = [12, 5, 6, 76, 23, 12, 34, 5, 23, 34, 65, 34, 22, 67, 34];
const arr2 = [12, 5, 6, 76, 23, 12, 34, 5, 23, 34];
const mostAppearances = (arr) => {
const frequencyMap = {};
arr.forEach(el => {
if (frequencyMap[el]) {
frequencyMap[el]++;
} else {
frequencyMap[el] = 1;
}
});
let highest, frequency = 0;
Object.keys(frequencyMap).forEach(key => {
if (frequencyMap[key] > frequency) {
highest = parseInt(key, 10);
frequency = frequencyMap[key];
}
});
return arr.indexOf(highest);
};
console.log(mostAppearances(arr1));
console.log(mostAppearances(arr2));Kết quả
Đầu ra trong console sẽ là:
6
1