【发布时间】:2015-12-16 02:02:47
【问题描述】:
我正在尝试将我的代码更新到 ES6,因为我使用的是 Node 4.0,并且到目前为止我真的很喜欢它的功能。但是我对新的 ES6 Map 数据结构有问题,因为当使用 Array 作为键时,它的行为与 {} 不同。我将它用作反地图。
我运行这段代码,我想知道如何使用数组作为Map 的键。
"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']]);
它打印出以下内容,第一行应该是1 而不是undefined:
undefined
1
原始的 JS 映射对键进行字符串化,我不想使用新的 ES6 Map 进行相同类型的字符串化破解。
对于 ES6 Map,如何可靠地使用数组作为键?
【问题讨论】:
-
TL;DR: JavaScript 中的集合 all 将数组键转换为字符串...因此您只有两种可能性: A. 使用字符串 (考虑到 JS 集合无论如何都会这样做,如果你正在做一个元组,这可能不是一个糟糕的方法,即
key.split(",")[0] key.split(",")[1]),或者 B. 拆分数组并将其元素相互映射和子映射,就像anko 的回答 + arrayed-keyed-map 确实...
标签: javascript arrays dictionary ecmascript-6 es6-map