如何在JavaScript中创建哈希或字典对象
How to create a hash or dictionary object in JavaScript
我想用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,它将无法区分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!
相关
- MDN文档:Map,Symbol,Set,WeakMap,WeakSet
您想要创建的是Object,而不是Array。
像这样,
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
}
相关文章:
- 根据选项卡内部的文本链接中的哈希ID动态选择jqueryUI选项卡
- Steam Web API:I'我不知道该如何处理这个看起来像哈希的url来生成图像
- AngularJS:获取链接中没有哈希的查询字符串值
- 如何在Google chrome安全首选项文件中创建扩展安全哈希代码
- 如何在浏览器重新加载时保存位置哈希状态
- jQuery scrollTop-哈希错误
- 动态添加哈希标记;t工作
- 在Javascript中实现对哈希值的暴力攻击
- 如何在JavaScript/Node中计算SHA256哈希和Base64字符串编码
- 使用Javascript/jQuery以编程方式将当前锚点/哈希/片段附加到任何表单操作url
- 可以在React Native中制作一个自哈希应用程序
- 重定向不带哈希的URL-Ember.JS
- 正在测试主干事件哈希
- JavaScript对象作为哈希?复杂性是否大于O(1)
- 如何在JavaScript中实现哈希表
- 如何根据传入的哈希标签发送PHP请求
- 在我的图库(jQuery)中使用箭头导航时,更改URL中的哈希
- 用JavaScript中的循环传递哈希表/字典
- 如何将 Python 字典转换为 JavaScript 哈希表
- 如何在JavaScript中创建哈希或字典对象