Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การนับความถี่ของคำที่คั่นด้วยช่องว่างใน JavaScript

มีสตริงที่มีคำคั่นด้วยช่องว่าง ต้องเขียนฟังก์ชันนับความถี่ของแต่ละคำและคืนอาร์เรย์ของออบเจกต์ {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 } ]