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

Susan Sarandon
Lepaskan: 2024-10-30 00:34:28
asal
384 orang telah melayarinya

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"
  }
];
Salin selepas log masuk

Hasil yang dijangkakan ialah:

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

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan