【发布时间】:2011-01-31 08:28:31
【问题描述】:
我有一个使用此代码创建的数组:
var widthRange = new Array();
widthRange[46] = { min:0, max:52 };
widthRange[66] = { min:52, max:70 };
widthRange[90] = { min:70, max:94 };
我想在循环中获取每个值 46、66、90。我试过for (var key in widthRange),但这给了我一大堆额外的属性(我假设它们是对象上的函数)。我不能使用常规的 for 循环,因为这些值不是连续的。
【问题讨论】:
-
看起来你有数据,虽然它恰好有数字键,但实际上并不是数组数据。我会考虑在这里使用常规对象。
-
@Quentin 叫做稀疏数组。性能方面,最好在这里使用数组而不是对象。此外,在性能方面,甚至没有列出最佳答案:
Array.prototype.forEach。在数组上调用Object.keys性能不佳,因为浏览器不会针对它进行优化。for(var key in array)不好,因为它遍历原型并将遇到的每个数字键字符串化(将双精度数转换为 base10 非常慢)。然而,forEach正是为迭代稀疏数组而设计的,与其他解决方案相比,它将为您的代码提供出色的性能
标签: javascript arrays key