如果我有一个数组:
var a = [56, 99, 2];
迭代我所知道的所有内容的唯一方法是:
for (var i = 0; i < a.length; ++i) {
// do something with a[i]
}
如果我这样做:
for (var i in a) {
// do something with a[i]
}
它也会得到“包含”和“空”功能,所以我不希望这样。
有没有比++i
方法更好的方法?
答案 0 :(得分:1)
大多数现代浏览器支持forEach
(不了解IE; - ))
[56, 99, 2].forEach(function(element, index, array) {
console.log(element);
});
for .. in
in(尽管不是真的推荐):
array.hasOwnProperty(key) == true
答案 1 :(得分:0)
是的,请使用.forEach
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
一般来看看数组内置方法,它们可以使您的代码更加优雅和安全:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array
答案 2 :(得分:0)
如果要在IE8浏览器中运行,您需要小心使用上面建议的forEach。见For-each over an array in JavaScript?
答案 3 :(得分:0)
尝试:
for (var i of a)
{
//Do something
}
for..of循环实际上只是EcmaScript 6提案的一部分,实际上是实验性的,所以浏览器支持现在是有限的(Firefox支持它,但你可能遇到其他问题)浏览器)。所以你可能想要使用array.foreach()方法,正如其他人所建议的那样。您可以阅读更多here。
仍然,恕我直言,知道一种技术是很好的,它将(很快)成为在js中迭代数组的标准方法。