通过深度比较查找数组值,而不是ES6 Map中的严格相等

时间:2016-09-12 14:07:29

标签: javascript ecmascript-6

我正在将使用hashmap库的一些代码移植到ES6 Map。但是,我遇到了一个问题,即我现有的地图是用数组键控的。查找时间,生成等效数组并用作查找键。使用HashMap,这很好,因为复杂的键以与深度比较相当的方式进行哈希处理。另一方面,ES6的Map对密钥执行严格的相等比较。

我查找键的旧方法:

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

在ES6下,由于严格的相等比较,该方法不起作用。

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

有没有办法强制给定比较函数,或者以一种通过深度比较而不是严格相等来查找复杂键的方式重载get()?我还没有能够创建一个Map子类,而没有通过密钥进行线性搜索,这完全破坏了我在使用本机类型时所获得的任何效率提升。第一名。

0 个答案:

没有答案