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

我想在javascript中创建一个地图对象。我想到了以下想法:


 var a = new Array();

 a["key1"] = "value1";

 a["key2"] = "value2";

但是那我怎么才能找到一个特定的键是否存在?


jeck猫
浏览 438回答 4
4回答

忽然笑

如果要命名键,请不要使用数组,而应使用普通对象。var a = {};a["key1"] = "value1";a["key2"] = "value2";然后:if ("key1" in a) {   // something} else {   // something else }

跃然一笑

JavaScript现在提供了内置的Map类型。可以使用它而不是简单地使用Object。所有主要浏览器的当前版本均支持该功能。映射不支持[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,它将无法区分key2,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 Map = {};Map['key1'] = 'value1';Map['key2'] = 'value2';您可以通过多种方式检查密钥是否存在:Map.hasOwnProperty(key);Map[key] != undefined // For illustration // Edit, remove null checkif (key in Map) ...

凤凰求蛊

使用in运算符:例如"key1" in a。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript