如何在JavaScript中创建哈希或字典对象[重复]

2020/10/25 13:01 · javascript ·  · 0评论

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

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

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

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

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,则无法区分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!

有关

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

像这样

var Map = {};

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

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

Map.hasOwnProperty(key);
Map[key] != undefined // For illustration // Edit, remove null check
if (key in Map) ...

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

if( a['desiredKey'] !== undefined )
{
   // it exists
}
本文地址:http://javascript.askforanswer.com/ruhezaijavascriptzhongchuangjianhaxihuozidianduixiangzhongfu.html
文章标签: ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!