如何在JavaScript中创建散列或字典对象?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (38)

想在javascript中创建一个map对象。想到了以下的想法:

 var a = new Array();
 a["key1"] = "value1";
 a["key2"] = "value2";

但我怎么才能找到某个特定的Key是否存在呢?

提问于
用户回答回答于

映射不支持[subscript]对象使用的符号。语法隐式转换subscript值转换为原语字符串或符号。

var m = new Map();
var key1 = 'key1';
var key2 = {};
var key3 = {};

m.set(key1, 'value1');
m.set(key2, 'value2');

console.assert(m.has(key2), "m should contain key2.");
console.assert(!m.has(key3), "m should not contain key3.");

对象只支持作为键的原始字符串和符号,因为值存储为属性。如果你使用的是对象,它就无法区分key2 and key3因为它们的字符串表示应该是相同的:

var o = new Object();
var key1 = 'key1';
var key2 = {};
var key3 = {};

o[key1] = 'value1';
o[key2] = 'value2';

console.assert(o.hasOwnProperty(key2), "o should contain key2.");
console.assert(!o.hasOwnProperty(key3), "o should not contain key3."); // Fails!
用户回答回答于

如果想要命名键,不要使用数组,建议使用普通对象。

var a = {};
a["key1"] = "value1";
a["key2"] = "value2";

然后:

if ("key1" in a) {
   // something
} else {
   // something else 
}

扫码关注云+社区

领取腾讯云代金券