我想在 javascript 中创建一个地图对象。我想到了以下想法:
var a = new Array();
a["key1"] = "value1";
a["key2"] = "value2";
但是我怎么能找到一个特定的键是否存在呢?
我想在 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
值转换为原始字符串或符号。Maps 支持任何值作为键,因此您必须使用方法.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 check
if (key in Map) ...
使用in
运算符:例如"key1" in a
。
if( a['desiredKey'] !== undefined )
{
// it exists
}