Viết hàm JavaScript tìm phần tử xuất hiện với tần suất nhiều thứ hai trong mảng.
Ví dụ
const arr = [1, 34, 4, 3, 2, 1, 4, 6, 4, 6, 5, 3, 6, 6];
// Tần suất: 6→4 lần, 4→3 lần, 1→2 lần, 3→2 lần, 34→1, 2→1, 5→1
// Nhiều nhất: 6 (4 lần)
// Thứ hai: 4 (3 lần)Giải pháp
Dùng Map đếm tần suất, chuyển thành mảng, sắp xếp giảm dần theo tần suất, lấy phần tử index 1.
const arr = [1, 34, 4, 3, 2, 1, 4, 6, 4, 6, 5, 3, 6, 6];
const secondMostFrequent = arr => {
const map = arr.reduce((acc, val) => {
acc.set(val, (acc.get(val) || 0) + 1);
return acc;
}, new Map());
const frequencyArray = Array.from(map.entries());
// Sắp xếp giảm dần theo tần suất
frequencyArray.sort((a, b) => b[1] - a[1]);
// Trả về giá trị (key) của phần tử thứ 2
return frequencyArray[1]?.[0];
};
console.log(secondMostFrequent(arr));Kết quả
4Cải tiến: Dùng acc.get(val) || 0 gọn hơn so với if/else. Thêm optional chaining ?. để an toàn khi mảng ít hơn 2 phần tử duy nhất.