Menggunakan objek Array sebagai kunci dalam Peta ES6
P粉344355715
P粉344355715 2023-10-21 18:06:40
0
2
551

Saya cuba mengemas kini kod saya kepada ES6 kerana saya menggunakan Node 4.0 dan sangat menyukai cirinya setakat ini. Namun, saya rasa berbeza dengan ES6 baharuMap数据结构有问题,因为当使用Array作为键时,它的行为与{}. Saya menggunakannya sebagai peta kaunter.

Saya menjalankan kod ini dan saya ingin tahu cara menggunakan tatasusunan sebagai kunci untukMap.

"use strict"; var a = new Map(); a.set(['x','y'], 1); console.log(a.get(['x','y'])); var b = {}; b[['x','y']] = 1; console.log(b[['x','y']]);

Ia mencetak perkara berikut, baris pertama hendaklah1而不是undefined:

undefined 1

Peta JS asal menyelaraskan kekunci dan saya tidak mahu melakukan jenis penggodaman stringifikasi yang sama dengan ES6 baharuMap.

Bagaimanakah saya boleh menggunakan tatasusunan sebagai kunci dalam ES6Map?

P粉344355715
P粉344355715

membalas semua (2)
P粉529245050

Anda perlu menyimpan rujukan kepada contoh bukan primitifArraydigunakan sebagai kunci. Sila ambil perhatian perbezaan dalam dua contoh berikut:

"use strict"; var a = new Map(); a.set(['x','y'], 1); console.log(a.get(['x','y'])); console.log(['x','y'] === ['x','y']); var b = new Map(); var array = ['x','y']; b.set(array, 1); console.log(b.get(array)); console.log(array === array);
    P粉978551081

    Fahami cara kekunci Peta ES2015 membandingkan (hampir) seperti===运算符一样。两个数组实例,即使它们包含相同的值,也不会以===antara satu sama lain.

    Cuba ini:

    var a = new Map(), key = ['x', 'y']; a.set(key, 1); console.log(a.get(key));

    Memandangkan kelas Map bertujuan untuk digunakan sebagai kelas asas, anda mungkin boleh menggunakan fungsi.get()overridden untuk melaksanakan subkelas.

    ("hampir" dalam ayat pertama menggambarkan bahawa perbandingan kesamaan utama Peta dilakukan melaluiObject.is(), yang jarang berlaku dalam pengekodan harian. Pada asasnya, varianketigaujian kesaksamaan dalam JavaScript.)

      Muat turun terkini
      Lagi>
      kesan web
      Kod sumber laman web
      Bahan laman web
      Templat hujung hadapan
      Tentang kita Penafian Sitemap
      Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!