cari

Rumah  >  Soal Jawab  >  teks badan

Menggunakan objek Array sebagai kunci dalam Peta ES6

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 baharu Map 数据结构有问题,因为当使用 Array 作为键时,它的行为与 {}. Saya menggunakannya sebagai peta kaunter.

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

"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 hendaklah 1 而不是 undefined:

undefined
1

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

Bagaimanakah saya boleh menggunakan tatasusunan sebagai kunci dalam ES6 Map?

P粉344355715P粉344355715398 hari yang lalu683

membalas semua(2)saya akan balas

  • P粉529245050

    P粉5292450502023-10-22 13:33:57

    Anda perlu menyimpan rujukan kepada contoh bukan primitif Array digunakan 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);

    balas
    0
  • P粉978551081

    P粉9785510812023-10-22 11:23:32

    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 melalui Object.is(), yang jarang berlaku dalam pengekodan harian. Pada asasnya, varian ketiga ujian kesaksamaan dalam JavaScript.)

    balas
    0
  • Batalbalas