在我的脚本中,需要创建一个哈希表,我在google中进行了搜索。为此,大多数人都推荐使用JavaScript object。问题是哈希表中的一些键有一个“.在他们身上。我可以使用关联数组轻松地创建这些键。
我不明白为什么关联数组不好。在我查看的站点上提到的第一件事是length属性。
我来自Perl的背景,在那里我使用了散列。最常见的用途是从键中获取值,检查键是否存在,删除键值对,以及添加键值对。如果这些是我的常用用法,我可以安全地使用关联数组吗?
发布于 2011-11-09 23:54:23
在JavaScript中,对象是关联的,arrays...there不是它们的单独概念。您还可以安全地使用‘’。键名中,但只能使用方括号表示法访问该值:
var foo = {}
foo['bar'] = 'test';
foo['baz.bin'] = 'value';
alert(foo.bar); // Shows 'test'
alert(foo['baz.bin']); // Shows 'value'
如果您已经在使用它们,并且它们有效,那么您就是安全的。
发布于 2011-11-09 23:54:38
在JavaScript中,对象和数组几乎是一回事,数组具有一些神奇的功能(自动更新长度属性等)和适用于数组的原型方法。构造对象也比使用关联数组容易得多:
var obj = {"my.key": "myValue"};
与
var obj = [];
obj["my.key"] = "myValue";
因此,千万不要为此使用数组对象,而应该只使用常规对象。
一些功能:
var obj = {}; // Initialized empty object
删除键值对:
delete obj[key];
检查密钥是否存在:
key in obj;
获取密钥值:
obj[key];
添加键值对:
obj[key] = value;
发布于 2011-11-09 23:56:05
实际上,“关联数组”与ECMAScript中的“类似数组的对象”非常相似。即使数组也是ECMAScript中的对象,除了具有数字键(仍是背景中的字符串)和.length
属性,以及一些从Array.prototype
继承的方法。
因此,Perl散列和ECMAScript对象的行为类似。您可能不知道,您不仅可以通过点访问对象属性,还可以使用括号和字符串访问对象属性,例如
var myObj = { foo: 42 };
myObj.foo; // 42
myObj['foo']; // 42
了解了这一点,您还可以在.
中使用密钥
var myObj = { };
myObj['hello.foo.world'] = 42;
当然,您只能使用括号表示法来访问该键。
https://stackoverflow.com/questions/8067590
复制相似问题