在Javascript中使用映射实现二维数组
我在一些代码中使用了一个二维数组,我想在上下文中用一个更合适的数据结构来替换它,即a。我想用Map的方法,也希望性能会这样提高。但是,我遇到了以下问题:在Javascript中使用映射实现二维数组,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,我在一些代码中使用了一个二维数组,我想在上下文中用一个更合适的数据结构来替换它,即a。我想用Map的方法,也希望性能会这样提高。但是,我遇到了以下问题: const myMap = new Map(); myMap.set([1,2],"some value"); console.log(myMap.get([1,2])); 这将返回未定义的。我有点理解为什么会这样,但这很不方便。下面的工作,但它不能在实践中使用。(假设我想在某个坐标上检查地图,该坐标是通过一些计算得出的,它不能引用设置地图的
const myMap = new Map();
myMap.set([1,2],"some value");
console.log(myMap.get([1,2]));
这将返回未定义的
。我有点理解为什么会这样,但这很不方便。下面的工作,但它不能在实践中使用。(假设我想在某个坐标上检查地图,该坐标是通过一些计算得出的,它不能引用设置地图的同一坐标。)
有什么解决办法吗?或者映射不适合这种二维数组的实现吗?两个不同的对象永远不能使用比较作为真值,您可以使用字符串作为键而不是数组
constmymap=newmap();
myMap.set([1,2].toString(),“some value”);
log(myMap.get([1,2].toString())代码>使用比较,两个不同的对象永远不会计算为true,您可以使用字符串作为键而不是数组
constmymap=newmap();
myMap.set([1,2].toString(),“some value”);
log(myMap.get([1,2].toString())
您可以将数组字符串化,然后将其用作密钥。这是一个有趣的解决方法,谢谢!如果要对数组进行字符串化(JSON.stringify
或array#join
),您也可以使用普通对象而不是映射。您可以对数组进行字符串化,然后将其用作键。这是一个有趣的解决方法,谢谢!如果要对数组进行字符串化(JSON.stringify
或array\join
),也可以使用普通对象而不是映射
const myMap = new Map();
const someCoord = [1,2];
myMap.set(someCoord,"some value");
console.log(myMap.get(someCoord));