Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tìm từ xuất hiện nhiều nhất trong mảng bằng JavaScript

Vấn đề

Chúng ta cần viết một hàm JavaScript nhận vào một mảng arr các chuỗi chữ cái tiếng Anh viết thường làm đối số thứ nhất. Đối số thứ hai là một số num (num < độ dài của mảng).

Hàm phải trả về num phần tử xuất hiện nhiều nhất trong mảng arr.

Kết quả phải được sắp xếp theo tần suất từ cao đến thấp. Nếu hai từ có tần suất giống nhau, từ có thứ tự bảng chữ cái thấp hơn sẽ đứng trước.

Ví dụ, nếu đầu vào của hàm là:

Đầu vào

const arr = ["the", "day", "is", "sunny", "the", "the", "the", "sunny", "is", "is"]; const num = 4;

Đầu ra

const output = ["the", "is", "sunny", "day"];

Giải thích đầu ra

"the", "is", "sunny" và "day" là bốn từ xuất hiện nhiều nhất, với số lần xuất hiện lần lượt là 4, 3, 2 và 1.

Ví dụ

Dưới đây là mã:

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' ]