为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

jeck猫 2019-12-16 09:47:59
我想在javascript中创建一个地图对象。我想到了以下想法: var a = new Array(); a["key1"] = "value1"; a["key2"] = "value2";但是那我怎么才能找到一个特定的键是否存在?
查看完整描述

4 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

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


var a = {};

a["key1"] = "value1";

a["key2"] = "value2";

然后:


if ("key1" in a) {

   // something

} else {

   // something else 

}


查看完整回答
反对 回复 2019-12-16
?
跃然一笑

TA贡献1826条经验 获得超6个赞

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!


查看完整回答
反对 回复 2019-12-16
?
莫回无

TA贡献1865条经验 获得超7个赞

您要创建一个对象,而不是一个数组。


像这样


var Map = {};


Map['key1'] = 'value1';

Map['key2'] = 'value2';

您可以通过多种方式检查密钥是否存在:


Map.hasOwnProperty(key);

Map[key] != undefined // For illustration // Edit, remove null check

if (key in Map) ...


查看完整回答
反对 回复 2019-12-16
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

使用in运算符:例如"key1" in a。


查看完整回答
反对 回复 2019-12-16
  • 4 回答
  • 0 关注
  • 437 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号