【发布时间】:2014-10-01 04:36:16
【问题描述】:
以下示例来自:How is a JavaScript hash map implemented? 我想知道这是否是从对象中获取元素的最优化方式:
var obj = {
foo:{ hi: "higher"},
bar:{ bye: "bye"},
baz:{ cya: "cya"}
}
var value = obj[Object.getOwnPropertyNames(obj)[0]];
console.log(value);
我只需要最优化的方法来从给定对象中获取一个元素(随机很好,只需要对象中的任何一个元素),不管它是什么。我只需要访问它并希望能够删除它。
这是最好的实现吗?
【问题讨论】:
-
嗯,最优化的方法是提前知道属性名称。如果您只想获取“第一个”属性名称,则使用
for...in循环(并在第一次迭代后中断)可能更高效。您始终可以使用浏览器的开发者工具或jsperf.com 对您的解决方案进行基准测试。 -
我不需要对象中的第一个,但我也需要能够删除/删除它
-
好的,那么你所拥有的工作正常。或者正如我所说,使用
for...in循环。使用jsperf.com 比较性能(我假设“优化”您是在谈论性能)。 -
我想使用 hashmap 来避免 for 循环 :] 谢谢!
-
在事先不知道属性名称的情况下,对象不会针对访问进行优化。
Object.getOwnPropertyNames还将以一种或另一种方式迭代对象并收集所有属性名称。使用任何对你有用的东西。如果您不想使用for...in循环,即使它们更快,也可以。这都是你的决定,我只是指出替代方案。for...in循环用于迭代对象,因此它们不会相互排斥,相反。
标签: javascript hash hashmap