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
?
Anda perlu menyimpan rujukan kepada contoh bukan primitif
Array
digunakan sebagai kunci. Sila ambil perhatian perbezaan dalam dua contoh berikut:Fahami cara kekunci Peta ES2015 membandingkan (hampir) seperti
===
运算符一样。两个数组实例,即使它们包含相同的值,也不会以===
antara satu sama lain.Cuba ini:
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 melalui
Object.is()
, yang jarang berlaku dalam pengekodan harian. Pada asasnya, varianketigaujian kesaksamaan dalam JavaScript.)