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

กรองอาร์เรย์หนึ่งด้วยอีกอาร์เรย์หนึ่ง - JavaScript

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

const main = [
  {name: "Karan", age: 34},
  {name: "Aayush", age: 24},
  {name: "Ameesh", age: 23},
  {name: "Joy", age: 33},
  {name: "Siddarth", age: 43},
  {name: "Nakul", age: 31},
  {name: "Anmol", age: 21},
];
const names = ["Karan", "Joy", "Siddarth", "Ameesh"];

เราต้องเขียนฟังก์ชันที่รับอาร์เรย์ทั้งสองและกรองอาร์เรย์แรกในที่เดิม (in-place) ให้เหลือเฉพาะอ็อบเจกต์ที่ name อยู่ในอาร์เรย์ที่สอง

ตัวอย่าง

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

const main = [
  {name: "Karan", age: 34},
  {name: "Aayush", age: 24},
  {name: "Ameesh", age: 23},
  {name: "Joy", age: 33},
  {name: "Siddarth", age: 43},
  {name: "Nakul", age: 31},
  {name: "Anmol", age: 21},
];
const names = ["Karan", "Joy", "Siddarth", "Ameesh"];

const filterUnwanted = (main, names) => {
  for(let i = 0; i < main.length; ){
    if(names.includes(main[i].name)){
      i++;
      continue;
    };
    main.splice(i, 1);
  };
};

filterUnwanted(main, names);
console.log(main);

ผลลัพธ์

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

[
  { name: 'Karan', age: 34 },
  { name: 'Ameesh', age: 23 },
  { name: 'Joy', age: 33 },
  { name: 'Siddarth', age: 43 }
]