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

ลบรายการซ้ำออกจากอาร์เรย์อย่างสมบูรณ์ใน JavaScript

เราต้องเขียนฟังก์ชันรับอาร์เรย์ คืนอาร์เรย์ใหม่ที่ลบค่าซ้ำทั้งหมด ค่าที่ปรากฏมากกว่าหนึ่งครั้งในอาร์เรย์ต้นทาง ไม่ควรปรากฏแม้ครั้งเดียวในอาร์เรย์ใหม่

เช่น ถ้าอินพุตคือ

const arr = [23,545,43,232,32,43,23,43];

เอาต์พุทควรเป็น

const output = [545, 232, 32];

เข้าใจความแตกต่าง

  • Array.prototype.indexOf() → คืน index ของการปรากฏครั้งแรก ถ้ามี มิฉะนั้น -1
  • Array.prototype.lastIndexOf() → คืน index ของการปรากฏครั้งสุดท้าย ถ้ามี มิฉะนั้น -1

ทั้งสองเมธอดเริ่มจากซ้ายไปขวา เริ่มจาก 0 ถ้าอาร์กิวเมนต์ที่สองเป็น undefined มิฉะนั้นเริ่มจากอาร์กิวเมนต์ที่สองถ้าเป็นตัวเลข

จุดสำคัญคือ ถ้าในอาร์เรย์ indexOf() และ lastIndexOf() ชี้ไป index เดียวกัน เราสามารถมั่นใจได้ว่ามันมีอยู่เพียงครั้งเดียว เราจะใช้ข้อสังเกตนี้ในโค้ด

โค้ดเต็ม

ตัวอย่าง

const arr = [23,545,43,232,32,43,23,43];
const deleteDuplicate = (arr) => {
  const output = arr.filter((item, index, array) => {
    return array.indexOf(item) === array.lastIndexOf(item);
  })
  return output;
};
console.log(deleteDuplicate(arr));

ผลลัพธ์

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

[ 545, 232, 32 ]