我有一个非常大的对象,我只想遍历它的值。
如果我编写如下循环,对于具有 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/