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

JavaScript อาร์เรย์: หาองค์ประกอบทั้งหมดที่ปรากฏมากกว่า n ครั้ง


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

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

ตัวอย่าง

const arr = [34, 6, 34, 8, 54, 7, 87, 23, 34, 6, 21, 6, 23, 4, 23];
const moreThan = (arr, num) => {
  const creds = arr.reduce((acc, val) => {
    let { map, res } = acc;
    const count = map.get(val);
    if(!count && typeof count !== 'number'){
      map.set(val, 1);
    }else if(num - count <= 1){
      res.push(val);
    } else {
      map.set(val, count+1);
    }
    return {map, res};
  }, {
    map: new Map(),
    res: []
  });
  return creds.res;
};
console.log(moreThan(arr, 3));

ผลลัพธ์

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

[34, 6, 23]