Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

วนซ้ำและรับความถี่ขององค์ประกอบทั้งหมดในอาร์เรย์ JavaScript


สมมติว่าเราจะได้รับอาร์เรย์ของตัวเลข/สตริงที่มีรายการที่ซ้ำกัน สิ่งที่เราต้องทำคือคืนค่าความถี่ของแต่ละองค์ประกอบในอาร์เรย์ การส่งคืนวัตถุที่ไม่มีองค์ประกอบเป็นคีย์และมีค่าเป็นความถี่จะเหมาะกับสถานการณ์นี้

เราจะวนซ้ำในอาร์เรย์ด้วยลูป forEach() และเพิ่มจำนวนองค์ประกอบในออบเจกต์หากมีอยู่แล้วไม่เช่นนั้นเราจะสร้างคุณสมบัติใหม่สำหรับองค์ประกอบนั้นในวัตถุ

และสุดท้ายเราจะส่งคืนวัตถุ

รหัสเต็มสำหรับปัญหานี้จะเป็น -

ตัวอย่าง

const arr = [2,5,7,8,5,3,5,7,8,5,3,4,2,4,2,1,6,8,6];
const getFrequency = (array) => {
   const map = {};
   array.forEach(item => {
      if(map[item]){
         map[item]++;
      }else{
         map[item] = 1;
      }
   });
   return map;
};
console.log(getFrequency(arr));

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็น -

{ '1': 1, '2': 3, '3': 2, '4': 2, '5': 4, '6': 2, '7': 2, '8': 3 }