gpt4 book ai didi

php - JavaScript 对象对关联数组(又名 map )有效吗?有哪些选择?

转载 作者:行者123 更新时间:2023-11-30 18:42:54 25 4
gpt4 key购买 nike

我是 JavaScript 的新手,最近一直在用 PHP 编写代码,我希望将其移植到 JavaScript。 PHP 在其 Array 容器类中直接实现了一个 Map,这在 JavaScript 的默认语言中是不存在的。

我读到的每个人似乎都说对关联数组使用对象,但在 reading this 之后,具体来说:

Property Lookup

When accessing the properties of an object, JavaScript will traverse the prototype chain upwards until it finds a property with the requested name.

When it reaches the top of the chain - namely Object.prototype - and still hasn't found the specified property, it will return the value undefined instead.

Object 似乎不是关联数组的有效解决方案,尤其是当您想要的数组可能包含 10 或 1000 时。

什么是 JavaScript 中映射/关联数组的有效替代方案?是否有一个很好的第 3 方库提供了一个很好的容器类,作为 map/assoc 实现。大批?我需要能够在我的代码中为各种索引策略轻松高效地创建大型多级关联数组,因此我需要最佳排序和搜索算法。

如果这一切看起来很明显,请原谅我,但一切都在指向我实现我的 assoc。数组作为对象,我认为这不是最佳方法。非常感谢任何帮助和指导。

最佳答案

您问题中的引用实际上与属性查找的优化程度无关。当您执行此操作时:var x = {} 然后是 x.foo,它将检查 foo 是否存在。如果没有,那么它就不会“沿着链向上”并寻找其他地方,因为 x 已经是最原始的对象类型。

您真正想问的是,假设您有一个对象,字符串查找的优化程度如何。也就是说,检查一下:

http://www.timdown.co.uk/jshashtable/

它是一个哈希表在JS中的实现。我没有检查它的优化程度,但在 Chrome 中,它比仅使用常规 JS 对象作为哈希表慢 5 到 10 倍。 (测试大小为 10000 个元素。)我自己写了一个简单的 JS 哈希表,得到了同样的结果。

我可以想象,但显然您应该对此进行测试,所有浏览器都将字符串键实现为内部优化的哈希,就像 PHP 数组的工作方式一样。如果不这样做,从性能的 Angular 来看,这似乎很愚蠢。

关于php - JavaScript 对象对关联数组(又名 map )有效吗?有哪些选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6318636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com