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

ลบอ็อบเจกต์ซ้ำในอาร์เรย์ตาม property - JavaScript

สมมติว่าเรามีอาร์เรย์ของอ็อบเจกต์ดังนี้:

const arr = [{name: "Jack", age: "14"},{name: "bob", age: "14"}, {name: "sue", age: "21"}, {name: "Jill", age: "16"}, {name: "Jack", age: "21"}];

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

ดังนั้น สำหรับอาร์เรย์ข้างต้น ผลลัพธ์ควรเป็น:

const arr = [{name: "Jack", age: "14"},{name: "bob", age: "14"}, {name: "sue", age: "21"}, {name: "Jill", age: "16"}];

ตัวอย่าง

โค้ดต่อไปนี้เป็นตัวอย่าง:

const arr = [
  {name: "Jack", age: "14"},
  {name: "bob", age: "14"},
  {name: "sue", age: "21"},
  {name: "Jill", age: "16"},
  {name: "Jack", age: "21"}
];

const removeDuplicate = arr => {
  const appeared = {};
  for(let i = 0; i < arr.length; ){
    if(!appeared.hasOwnProperty(arr[i].name)){
      appeared[arr[i].name] = 1;
      i++;
      continue;
    };
    arr.splice(i, 1);
  };
};

removeDuplicate(arr);
console.log(arr);

ผลลัพธ์

จะแสดงผลในคอนโซลดังนี้:

[
  { name: 'Jack', age: '14' },
  { name: 'bob', age: '14' },
  { name: 'sue', age: '21' },
  { name: 'Jill', age: '16' }
]