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.