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

ลบ Duplicate Elements ตามตัวอักษรแรกใน JavaScript

โจทย์

ลบ string ที่ขึ้นต้นด้วยตัวอักษรเดียวกัน ทิ้งไว้แค่ตัวแรก

Input: ['Apple', 'Jack', 'Army', 'Car', 'Jason']
Output: ['Apple', 'Jack', 'Car'] (ลบ Army เนื่องจากขึ้นต้น A เช่น Apple, ลบ Jason เนื่องจากขึ้นต้น J เช่น Jack)

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

const arr = ['Apple', 'Jack', 'Army', 'Car', 'Jason']; 
const delelteSameLetterWord = arr => { 
  const map = new Map(); 
  arr.forEach((el, ind) => { 
    if(map.has(el[0])){ 
      arr.splice(ind, 1); 
    }else{ 
      map.set(el[0], true); 
    }; 
  }); 
}; 
delelteSameLetterWord(arr); 
console.log(arr);

ผลลัพธ์

[ 'Apple', 'Jack', 'Car' ]

คำอธิบาย

ใช้ Map เก็บตัวอักษรแรกที่เจอแล้ว
forEach วนลูปพร้อม index
ถ้า map.has(el[0]) (ตัวอักษรแรกซ้ำ) → splice(ind, 1) ลบ element นั้นออก
ไม่ซ้ำ → map.set(el[0], true) บันทึกไว้
หมายเหตุ: splice ขณะ forEach อาจข้าม index ได้ ควรใช้ filter แทน