Rumah >hujung hadapan web >tutorial js >Bagaimanakah saya boleh menapis tatasusunan objek berdasarkan sifat yang sepadan dalam tatasusunan lain?

Bagaimanakah saya boleh menapis tatasusunan objek berdasarkan sifat yang sepadan dalam tatasusunan lain?

Susan Sarandon
Susan Sarandonasal
2024-10-30 00:34:28391semak imbas

How can I filter an array of objects based on matching properties in another array?

Menapis Tatasusunan Objek dengan Tatasusunan Objek Lain

Masalah ini melibatkan penapisan tatasusunan objek (myArray) menggunakan tatasusunan objek ( myFilter). Objektifnya adalah untuk mencipta tatasusunan baharu (myArrayFiltered) yang mengandungi hanya elemen dalam myArray yang sepadan dengan elemen yang sepadan dalam myFilter berdasarkan userid dan projectid.

Pertimbangkan contoh berikut:

myArray = [
  {
    userid: "100",
    projectid: "10",
    rowid: "0"
  },
  {
    userid: "101",
    projectid: "11",
    rowid: "1"
  },
  {
    userid: "102",
    projectid: "12",
    rowid: "2"
  },
  {
    userid: "103",
    projectid: "13",
    rowid: "3"
  },
  {
    userid: "101",
    projectid: "10",
    rowid: "4"
  }
];

myFilter = [
  {
    userid: "101",
    projectid: "11"
  },
  {
    userid: "102",
    projectid: "12"
  },
  {
    userid: "103",
    projectid: "11"
  }
];

Hasil yang dijangkakan ialah:

myArrayFiltered = [
  {
    userid: "101",
    projectid: "11",
    rowid: "1"
  },
  {
    userid: "102",
    projectid: "12",
    rowid: "2"
  }
];

Untuk menyelesaikan tugasan ini, kita boleh menggunakan penapis dan beberapa kaedah tatasusunan. Kaedah ini tersedia secara meluas dalam penyemak imbas moden, dan polyfill wujud untuk penyemak imbas lama.

Pelaksanaan melibatkan penapisan myArray menggunakan kaedah penapis, di mana setiap elemen myFilter digunakan untuk membandingkan dengan elemen myArray. Kaedah sesetengah kemudiannya digunakan untuk menyemak sama ada terdapat sekurang-kurangnya satu padanan antara id pengguna dan sifat unjuran unsur semasa dalam myArray dan elemen yang sepadan dalam myFilter. Jika terdapat padanan, elemen semasa disertakan dalam hasil yang ditapis.

Berikut ialah coretan kod contoh yang menunjukkan pendekatan ini:

<code class="javascript">const myArray = [{ userid: "100", projectid: "10", rowid: "0" }, { userid: "101", projectid: "11", rowid: "1"}, { userid: "102", projectid: "12", rowid: "2" }, { userid: "103", projectid: "13", rowid: "3" }, { userid: "101", projectid: "10", rowid: "4" }];
const myFilter = [{ userid: "101", projectid: "11" }, { userid: "102", projectid: "12" }, { userid: "103",  projectid: "11"}];

const myArrayFiltered = myArray.filter((el) => {
  return myFilter.some((f) => {
    return f.userid === el.userid && f.projectid === el.projectid;
  });
});

console.log(myArrayFiltered);</code>

Kod ini akan mengeluarkan hasil yang dijangkakan, memberikan tatasusunan ditapis yang mengandungi hanya objek daripada myArray yang sepadan dengan kriteria yang dinyatakan dalam myFilter.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menapis tatasusunan objek berdasarkan sifat yang sepadan dalam tatasusunan lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn