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

หาองค์ประกายที่ซ้ำมากที่สุดในอาร์เรย์ JavaScript

เรามีอาร์เรย์ของตัวเลข/สตริงที่มีค่าบางอย่าง (บางอย่างซ้ำ) หน้าที่ของเราคือเขียนฟังก์ชันที่คืนค่าองค์ประกอบจากอาร์เรย์ที่ปรากฏมากที่สุดในอาร์เรย์

ตัวอย่างเช่น - ถ้าอาร์เรย์อินพุตคือ:

const input = ['a', 'v', 'k', 'f', 'a', 'f', 's', 'd', 'd', 'f', 'a', 'j', 'a'];

ผลลัพธ์ควรเป็น:

'a'

เพราะ 'a' ซ้ำมากที่สุด

มาเขียนโค้ดสำหรับนี้ เราจะใช้ Map() ติดตามองค์ประกอบที่เจอและจำนวน และสุดท้ายคืนค่าองค์ประกอบที่มีจำนวนมากที่สุด:

ตัวอย่างโค้ด

const input = ['m', 'a', 'v', 'k', 'f', 'a', 'f', 's', 'd', 'd', 'f', 'a', 'j', 'a'];

const findMaximum = arr => {
  const map = arr.reduce((acc, val) => {
    let count = acc.get(val);
    if (count) {
      acc.set(val, ++count);
    } else {
      acc.set(val, 1);
    }
    return acc;
  }, new Map());
  return Array.from(map).reduce((acc, val) => {
    if (val[1] > acc[1]) {
      return val;
    }
    return acc;
  }, [0, 0])[0];
};

console.log(findMaximum(input));

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็นดังนี้:

a