您可以使用Python字典等JavaScript对象。真的吗?对象中键查找的性能如何?是O(1)吗?向对象添加键也是恒定时间(散列)吗?
该V8设计文档暗示查询将至少这快,如果不是更快:
大多数JavaScript引擎使用类似字典的数据结构作为对象属性的存储
-每个属性访问都需要动态查找以解析属性在内存中的位置。这种方法通常使访问JavaScript中的属性比访问诸如Java和Smalltalk这样的编程语言中的实例变量慢得多。在这些语言中,由于对象类定义的固定对象布局,实例变量位于由编译器确定的固定偏移处。访问只是内存加载或存储的问题,通常只需要一条指令即可。
为了减少访问JavaScript属性所需的时间,V8不使用动态查找来访问属性。相反,V8在后台动态创建隐藏的类。[…]
在V8中,添加新属性后,对象会更改其隐藏类。
听起来,由于隐藏类的创建,添加新键可能会稍微慢一些。
问题内容: 存在一个包含许多对象的数组。通过属性在此数组中查找一个或多个对象所必需。 输入obj: 输出结果:(以值4搜索“开始”) 问题答案: _findItemByValue(Obj,“开始”,4); 与除IE6,IE7,IE8以外的所有版本兼容,但存在polyfill。
我一直在尝试几种方法来找到数组中的对象,其中ID=var,如果找到了,就从数组中删除该对象并返回新的对象数组。 数据: 数据:
问题内容: 我有一个数组: 我无法更改数组的结构。我正在传递ID为,我想获取数组中的该对象。 如何在JavaScript或jQuery中做到这一点? 问题答案: 使用方法: 从MDN: 如果数组中的元素满足提供的测试功能,则该方法返回数组中的第一个值。否则返回。 如果要查找其 索引 ,请使用: 从MDN: 该方法返回满足提供的测试功能的数组中第一个元素的索引。否则返回-1。 如果要获取匹配元素的数
问题内容: 我知道以前也曾问过类似的问题,但是这个问题有些不同。我有一个未命名对象的数组,其中包含一个已命名对象的数组,我需要获取“名称”为“字符串1”的对象。这是一个示例数组。 更新: 我应该早先说过,但是一旦找到它,我想用一个编辑过的对象替换它。 问题答案: 您可以遍历数组并测试该属性:
所以这个问题以前被问过,但我的情况有点不同,因为我已经尝试了这个网站中建议的所有解决方案,我有一个多提及数组: 我还有另一个小数组: 我只想找到与这个“dup”在同一行的“original”。到目前为止,我尝试了查找、过滤和grep,但这些都没有解决我的问题。 我尝试过的代码:
问题内容: 如何检查JavaScript对象或数组中是否存在特定键? 如果密钥不存在,而我尝试访问它,它将返回false吗?还是抛出错误? 问题答案: 检查不确定性不是测试密钥是否存在的准确方法。如果密钥存在但值实际上是怎么办? 您应该改为使用运算符: 如果要检查密钥是否不存在,请记住使用括号: 或者,如果您要特别测试对象实例的属性(而不是继承的属性),请使用: 有关和的方法之间的性能比较,关键是