มีสตริงที่มีคำคั่นด้วยช่องว่าง ต้องเขียนฟังก์ชันนับความถี่ของแต่ละคำและคืนอาร์เรย์ของออบเจกต์ {name, count} เรียงจากมากไปน้อย
ตัวอย่าง: 'a b c d a v d e f g q' → a:2, d:2, อื่นๆ:1
ตัวอย่างโค้ด
const str = 'a b c d a v d e f g q';
const countFrequency = (str = '') => {
const result = [];
const hash = {};
const words = str.split(" ");
words.forEach(function (word) {
word = word.toLowerCase();
if (word !== "") {
if (!hash[word]) { hash[word] = { name: word, count: 0 }; result.push(hash[word]); }
hash[word].count++;
}
});
return result.sort((a, b) => b.count - a.count);
};
console.log(countFrequency(str));
ผลลัพธ์
ค่าที่แสดงในคอนโซลจะเป็นดังนี้:
[ { name: 'a', count: 2 }, { name: 'd', count: 2 }, { name: 'b', count: 1 }, { name: 'c', count: 1 }, { name: 'v', count: 1 }, { name: 'e', count: 1 }, { name: 'f', count: 1 }, { name: 'g', count: 1 }, { name: 'q', count: 1 } ]