Soalan: Dalam JavaScript, adalah mungkin untuk mencipta struktur data yang meniru gelagat set, menyediakan kefungsian berikut:
Apakah pendekatan terbaik untuk mencapai fungsi seperti set ini? Adakah menggunakan objek, dengan kunci menyimpan sifat dan nilai semuanya ditetapkan kepada benar, penyelesaian yang munasabah?
Jawapan:
Dalam persekitaran ES6, anda boleh memanfaatkan objek Set terbina dalam, yang menyediakan semua keupayaan yang diingini.
Untuk ES5 dan Bawah:
Menggunakan Objek:
Mencipta objek dengan kekunci yang mewakili nilai dan nilai yang sentiasa ditetapkan kepada benar boleh berfungsi untuk tugas mudah, tetapi ia mempunyai had. Sebagai contoh, anda perlu menyemak kebenaran menggunakan if (obj[key]) dan bukannya if yang lebih ringkas (key in obj). Selain itu, pendekatan ini memaksa semua kunci kepada rentetan, menjadikannya bermasalah jika anda mempunyai kedua-dua kekunci berangka dan rentetan yang sepatutnya berfungsi dengan jelas.
Pertimbangkan penyelesaian berasaskan objek yang diubah suai ini yang menangani beberapa isu ini:
// create empty object var obj = {}; // or create an object with some items already in it var obj = { "1": true, "2": true, "3": true, "9": true }; // Question 1: Is A in the list? if (Object.prototype.hasOwnProperty.call(obj, A)) // put code here // Question 2: Delete 'A' from the list if it's there delete obj[A]; // Question 3: Add 'A' to the list if it's not already there obj[A] = true;
Objek Set Pra-Bina:
Jika anda lebih suka penyelesaian siap, anda boleh menggunakan objek set pra-bina seperti miniSet atau objek set yang lebih kaya dengan ciri . Ia menyediakan antara muka yang mudah untuk melaksanakan operasi set.
Polyfill Set ES6:
Untuk keserasian ES6, anda boleh menggunakan polyfill seperti polyfill Set ES6. Ini membolehkan anda menulis kod serasi ES6 yang akan berfungsi dalam persekitaran kembali ke IE7, tetapi ia tidak menangkap sepenuhnya kemudahan penggunaan objek Set ES6 asli.
Atas ialah kandungan terperinci Bagaimana untuk Mencapai Fungsi Seperti Set dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!