Ich versuche, meinen Code auf ES6 zu aktualisieren, da ich Node 4.0 verwende und dessen Funktionen mir bisher sehr gut gefallen. Beim neuen ES6 geht es mir allerdings anders Map
数据结构有问题,因为当使用 Array
作为键时,它的行为与 {}
. Ich verwende es als Gegenkarte.
Ich führe diesen Code aus und möchte wissen, wie man ein Array als Schlüssel für Map
verwendet.
"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']]);
Es wird Folgendes ausgegeben, die erste Zeile sollte 1
而不是 undefined
:
undefined 1
Die ursprüngliche JS-Map stringifiziert die Schlüssel und ich möchte mit dem neuen ES6 nicht die gleiche Art von Stringifizierungs-Hack durchführen Map
.
Wie kann ich Arrays zuverlässig als Schlüssel in ES6 verwenden Map
?
您需要保存对用作键的
Array
的非原始实例的引用。请注意以下两个示例中的差异:了解 ES2015 Map 键的比较(几乎)就像与
===
运算符一样。两个数组实例,即使它们包含相同的值,也不会以===
的方式相互比较。试试这个:
由于 Map 类旨在用作基类,因此您也许可以使用重写的
.get()
函数来实现子类。(第一句中的“几乎”是反映Map键相等性比较是通过
Object.is()
完成的,这在日常编码中很少出现。本质上是 JavaScript 中相等测试的第三种变体。)