javascript - 在不访问对象键的情况下迭代对象值

标签 javascript

我有一个非常大的对象,我只想遍历它的值。

如果我编写如下循环,对于具有 1m 个键的对象,哈希函数和哈希查找将被调用 1m 次。出于性能原因,我想避免这种情况。

for (var key in myObj) {sum+=myObj[key]}

我能否以某种方式只遍历值而不关心键?

最佳答案

我建议这里可能存在误会。

您可能知道 Javascript 对象不是简单的数组,它们的特定内部实现对 Javascript 代码是隐藏的。对象是键值集合,我认为没有任何保证顺序。

您怎么知道使用 for (var key in myObj) 进行哈希键查找?

我不认为这有任何保证,事实上,这样做需要知道从中计算散列的 key 。然而,您在不指定键的情况下要求所有值。

很有可能 for (var key in myObj) 已经做了最接近您想要的事情(取决于使用的浏览器或 js 引擎)。我怀疑更有可能直接扫描内部结构并避免计算哈希值,因为您需要所有键。

在 js 实现和标准方面更专家的人可能在这方面提供更多。

关于javascript - 在不访问对象键的情况下迭代对象值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10379420/

相关文章:

javascript - 将 preg_match 模式转换为 javascript 模式

javascript - 在一定距离内从 firebase 获取数据

javascript - Twitter Bootstrap 在下拉菜单打开时停止传播

javascript - 浏览器显示的图标在哈希更改时闪烁

javascript - 动态 ES6 模块作用域

javascript - 从带有多个innertext的网页excel vba中获取数据

javascript - Canvas Audio Visualizer 未出现在 Safari 中

javascript - 如果当前选择了某些内容,则阻止多个功能

javascript - 如何触发 rxjs observable

javascript - AngularJS 中的生产者消费者队列