如何在 JavaScript 中创建哈希或字典对象

2022-08-30 02:10:10

我想在javascript中创建一个map对象。我得出了以下想法:

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

但是,我如何找到特定键是否存在?


答案 1

如果需要命名键,请不要使用数组,请使用普通对象。

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

然后:

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

答案 2

内置的 Map 类型现在在 JavaScript 中可用。可以使用它,而不是简单地使用对象。所有主要浏览器的当前版本都支持它。

地图不支持对象使用的表示法。该语法将值隐式转换为基元字符串或符号。映射支持任何值作为键,因此必须使用 方法 、 和 。[subscript]subscript.get(key).set(key, value).has(key)

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

对象仅支持将基元字符串和符号作为键,因为这些值存储为属性。如果您使用的是 Object,则无法区分,因为它们的字符串表示形式是相同的:key2key3

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!

相关