ES6 映射键可以是字符串或数字

alo*_*war 1 javascript ecmascript-6

我有一个 ES6 Map ,其中键是数字。有时键是数字,有时键是表示数字的字符串。对我来说,地图在运行时永远不会有重复的键。示例我永远不会拥有键 "1" 和 1 。

从地图检索时,我需要一个简单的单行代码,它将否定键是字符串还是数字。

var map = new Map();
undefined
map.set('1', 'string one');
map.set(2, 'number tow')
Map(2) {"1" => "string one", 2 => "number tow"}
map.get(1)
undefined
map.get('1')
"string one"
Run Code Online (Sandbox Code Playgroud)

Nin*_*olz 6

您可以只使用没有原型的对象。对于访问,密钥被转换为字符串。

var map = Object.create(null);

map['1'] = 'string one';
map[2] = 'number two';

console.log(map[1]);   // 'string one'
console.log(map['1']); // 'string one'
console.log(map);
Run Code Online (Sandbox Code Playgroud)