Vấn đề
Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng, arr, các chuỗi của bảng chữ cái viết thường tiếng Anh làm đối số đầu tiên. Đối số thứ hai cho hàm của chúng ta là một số, num (num
Hàm của chúng ta phải trả về num phần tử thường xuyên nhất trong mảng arr.
Câu trả lời nên được sắp xếp theo tần suất từ cao nhất đến thấp nhất. Nếu hai từ có cùng tần suất, thì từ có thứ tự bảng chữ cái thấp hơn đứng trước.
Ví dụ:nếu đầu vào của hàm là
Đầu vào
Đầu ra
Giải thích đầu ra
"the", "is", "sunny" và "day" là bốn từ thường gặp nhất,
với số lần xuất hiện lần lượt là 4, 3, 2 và 1..
Sau đây là mã - const arr = ["the", "day", "is", "sunny", "the", "the", "the", "sunny", "is", "is"];
const num = 4;
const output = ["the", "is", "sunny", "day"];
Ví dụ
const arr = ["the", "day", "is", "sunny", "the", "the", "the", "sunny", "is", "is"];
const num = 4;
const mostFrequent = (arr = [], num = 1) => {
const map = {};
let keys = [];
for (let i = 0; i < arr.length; i++) {
if (map[arr[i]]) {
map[arr[i]]++;
} else {
map[arr[i]] = 1;
}
}
for (let i in map) {
keys.push(i);
}
keys = keys.sort((a, b) => {
if (map[a] === map[b]) {
if (a > b) {
return 1;
} else {
return -1;
}
}
else {
return map[b] - map[a];
}
})
.slice(0, num);
return keys;
};
console.log(mostFrequent(arr, num));
Đầu ra
[ 'the', 'is', 'sunny', 'day' ]