Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中使用映射实现二维数组_Javascript_Arrays_Ecmascript 6 - Fatal编程技术网

在Javascript中使用映射实现二维数组

在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])); 这将返回未定义的。我有点理解为什么会这样,但这很不方便。下面的工作,但它不能在实践中使用。(假设我想在某个坐标上检查地图,该坐标是通过一些计算得出的,它不能引用设置地图的

我在一些代码中使用了一个二维数组,我想在上下文中用一个更合适的数据结构来替换它,即a。我想用Map的方法,也希望性能会这样提高。但是,我遇到了以下问题:

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));