JavaScript对象对于关联数组(AKA映射)有效吗?有什么替代品?
|
我是JavaScript的新手,最近一直在用PHP编程,希望将其移植到JavaScript。 PHP在其
Array
容器类中直接实现了Map
,JavaScript默认语言中不存在。
我似乎读过的每个人都说要对关联数组使用对象,但是在阅读此内容后,具体来说:
属性查询
访问属性时
对象,JavaScript将遍历
原型链向上直到找到
具有要求名称的属性。
当它到达链的顶端时-
即Object.prototype-仍然
找不到指定的属性,
它将返回未定义的值
代替。
似乎Object
对于关联数组不是有效的解决方案,尤其是当您希望的数组可能包含1000的10或10时。
什么是JavaScript中映射/关联数组的有效替代方案?是否有一个好的第三方库,提供了作为map / assoc实现的出色的容器类。数组?我需要能够轻松高效地为代码中的各种索引策略创建大型的多度关联数组,因此我需要最佳的排序和搜索算法。
如果这一切看起来都很明显,请原谅我,但是所有事情一直指向我实施我的联盟。数组作为对象,我认为这不是最佳方法。任何帮助和指导,我们将不胜感激。
没有找到相关结果
已邀请:
2 个回复
诧不达
,然后
,它将检查foo是否存在。如果不是,那么它将不会“沿着链条前进”,而是将其移到别处,因为“ 5”已经是最原始的对象类型。 您真正要问的是,假设您有一个对象,那么如何优化字符串查找。也就是说,请检查以下内容: http://www.timdown.co.uk/jshashtable/ 它是JS中哈希表的实现。我没有检查它的优化程度,但是在Chrome中,它比仅将常规JS对象用作哈希表要慢5到10倍。 (测试大小为10000个元素。)我自己编写了一个简单的JS哈希表,并得到了相同的结果。 我想,但显然您应该进行测试,所有浏览器都在内部将字符串键实现为优化的哈希,就像PHP数组的工作方式一样。从性能的角度来看,如果没有的话,这似乎很愚蠢。
癸痊醒
是链中最顶端的
(您没有使用具有子原型的子对象),因此没有要评估的链。因此,“ 8”是它访问检查属性的唯一原型。因此,并没有像您暗示的那样存在真正的问题。