用于...的数组好吗?

时间:2016-10-16 20:05:33

标签: javascript arrays ecmascript-6

现在我们在JS中有一个for循环。是否可以无缝地用于迭代数组而不是for (let i = 0, len = array.length; i < len; i++) {...},或者是否有任何警告使得将它用于数组是一种不好的做法?

3 个答案:

答案 0 :(得分:2)

是的,没关系。

好吧,除非您为Symbol.iterator指定了自定义值,但仍希望循环从0到长度。

var arr = [1,2,3,4];
arr[Symbol.iterator] = function*() {
  yield "custom";
  yield "iterator";
};

console.log('Old for loop:');
for (let i = 0; i < arr.length; i++) console.log('    ', arr[i]);

console.log('New for-of loop:');
for (let item of arr) console.log('    ', item);

答案 1 :(得分:1)

是的,for... of适用于数组,因为它们是iterable

您可以通过检查Array实例是否有Symbol.iterator方法在浏览器的控制台中验证:

[][Symbol.iterator]
> values() { [native code] }

...而且,在同义上,你可以用for... of来迭代它们!

答案 2 :(得分:0)

在我看来,for-of循环的主要目的是迭代数组。使用for-in循环迭代数组的事实被认为是一种不好的做法与它无关。此外,for-in循环可用于迭代任何对象,但for-of循环只能用于迭代iterable的对象。