Mencari kunci bernilai array dengan perbandingan mendalam alih-alih persamaan ketat di Peta ES6 [duplikat]

Saya sedang dalam proses mem-porting beberapa kode yang menggunakan pustaka hashmap ke ES6 Peta. Namun, saya mengalami masalah karena peta saya yang ada dikunci dengan array. Saat waktu pencarian tiba, array yang setara akan dihasilkan dan digunakan sebagai kunci pencarian. Menggunakan HashMap, ini baik-baik saja, karena kunci kompleks di-hash dengan cara yang setara dengan perbandingan mendalam. Map ES6, di sisi lain, melakukan perbandingan kesetaraan yang ketat pada kunci.

Metode lama saya mencari kunci:

var h = new HashMap();
var k = [1,2,3];
h.set(k, 'foo');
h.has([1,2,3]) // returns true

Di ES6, metode itu tidak berfungsi, karena perbandingan kesetaraan yang ketat.

var m = new Map();
var k = [1,2,3];
m.set(k, 'foo');
m.has([1,2,3]) // returns false

Apakah ada cara untuk memaksakan fungsi perbandingan tertentu, atau membebani get() dengan cara yang akan mencari kunci kompleks dengan perbandingan mendalam alih-alih persamaan ketat? Saya belum dapat membuat subkelas Map yang melakukannya tanpa pencarian linier melalui kunci, sehingga benar-benar menghancurkan semua peningkatan efisiensi yang saya peroleh dari penggunaan tipe asli.


person sehrgut    schedule 12.09.2016    source sumber
comment
Tidak, sayangnya tidak ada.   -  person Bergi    schedule 12.09.2016
comment
Terima kasih atas penipuannya! Saya telah mencari di sini selama sekitar setengah jam, dan belum mencari hash dalam konteksnya, jadi saya melewatkannya sepenuhnya.   -  person sehrgut    schedule 12.09.2016
comment
Ya, untuk peta hash Anda tidak hanya memerlukan fungsi kesetaraan khusus tetapi juga metode hashing. Dan JS tidak memiliki keduanya :-/   -  person Bergi    schedule 12.09.2016
comment
Saya kira saya tetap menggunakan lib pihak ketiga lalu... /me membatalkan perubahan   -  person sehrgut    schedule 12.09.2016