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

ลบรายการที่ซ้ำกันออกจากอาร์เรย์ใน JavaScript . โดยสมบูรณ์


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

ค่าที่ปรากฏมากกว่าหนึ่งครั้งในอาร์เรย์เดิมไม่ควรปรากฏเพียงครั้งเดียวในอาร์เรย์ใหม่

ตัวอย่างเช่น หากอินพุตคือ −

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

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

const output = [545, 232, 32];

การทำความเข้าใจความแตกต่าง -

  • Array.prototype.indexOf() → จะส่งคืนดัชนีของสตริงที่ค้นหาเกิดขึ้นครั้งแรกหากมีอยู่ มิฉะนั้น -1

  • Array.prototype.lastIndexOf() → ส่งคืนดัชนีของสตริงที่ค้นหาล่าสุดหากมีอยู่ มิฉะนั้น -1

ทั้งสองวิธีเริ่มจากซ้ายไปขวา

ทั้งสองวิธีเริ่มต้นจาก 0 หากไม่ได้กำหนดอาร์กิวเมนต์ที่สอง อีกวิธีหนึ่งเริ่มจากอาร์กิวเมนต์ที่สองหากเป็นตัวเลข

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

รหัสเต็มสำหรับฟังก์ชันจะเป็น −

ตัวอย่าง

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 ]