Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Lọc mảng đối tượng bằng mảng tên trong JavaScript

Mô tả bài toán

Cho mảng đối tượng main và mảng tên names. Lọc main giữ lại các đối tượng có name nằm trong names (sửa đổi tại chỗ).

Ví dụ minh họa

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);

Kết quả

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

Cách viết hàm thuần túy (immutable)

const filterByNames = (arr, names) => 
  arr.filter(obj => new Set(names).has(obj.name));

Ưu điểm

Dùng Set tra cứu O(1), không thay đổi mảng gốc, code rõ ràng hơn.