JavaScript for...of 循环

在 JavaScript 中,有三种方法可以使用 for 循环。

for...of 循环是在较新版本的 JavaScript ES6 中引入的。

JavaScript 中的 for..of 循环允许你遍历可迭代对象(数组、集合、映射、字符串等)。


JavaScript for...of 循环

for...of 循环的语法是:

for (element of iterable) {
    // body of for...of
}

这里,

  • iterable - 一个可迭代对象(数组、集合、字符串等)。
  • element - 可迭代对象中的项

用通俗的话来说,你可以将上面的代码理解为:对于可迭代对象中的每一项,都执行循环体。


Arrays 的 for...of

for..of 循环可用于遍历 数组。例如:

// array
const students = ['John', 'Sara', 'Jack'];

// using for...of
for ( let element of students ) {

    // display the values
    console.log(element);
}

输出

John
Sara
Jack

在上面的程序中,for...of 循环用于遍历 students 数组对象并显示其所有值。


Strings 的 for...of

你可以使用 for...of 循环来遍历 字符串值。例如:

// string
const string = 'code';

// using for...of loop
for (let i of string) {
    console.log(i);
}

输出

c
o
d
e

Sets 的 for...of

你可以使用 for...of 循环来遍历 Set 元素。例如:

// define Set
const set = new Set([1, 2, 3]);

// looping through Set
for (let i of set) {
    console.log(i);
}

输出

1
2
3

Maps 的 for...of

你可以使用 for...of 循环来遍历 Map 元素。例如:

// define Map
let map = new Map();

// inserting elements
map.set('name', 'Jack');
map.set('age', '27');

// looping through Map
for (let [key, value] of map) {
    console.log(key + '- ' + value);
}

输出

name- Jack
age- 27

用户定义迭代器

你可以手动创建一个迭代器,并使用 for...of 循环来遍历 迭代器。例如:

// creating iterable object
const iterableObj = {

    // iterator method
    [Symbol.iterator]() {
        let step = 0;
        return {
            next() {
                step++;
                if (step === 1) {
                    return { value: '1', done: false};
                 }
                else if (step === 2) {
                    return { value: '2', done: false};
                }
                else if (step === 3) {
                    return { value: '3', done: false};
                }
                return { value: '', done: true };
            }
        }
    }
}

// iterating using for...of
for (const i of iterableObj) {
 console.log(i);
}

输出

1
2
3

Generators 的 for...of

由于 generators 是可迭代的,你可以更轻松地实现一个迭代器。然后你可以使用 for...of 循环来遍历 generators。例如:

// generator function
function* generatorFunc() {
  
    yield 10;
    yield 20;
    yield 30;
}

const obj = generatorFunc();

// iteration through generator
for (let value of obj) {
    console.log(value);
}

输出

10
20
30

for...of 与 for...in 对比

for...of for...in
for...of 循环用于遍历可迭代对象的值。 for...in 循环用于遍历对象的键。
for...of 循环不能用于遍历对象。 你可以使用 for...in 来遍历数组和字符串等可迭代对象,但应避免对可迭代对象使用 for...in

for...of 循环是在 ES6 中引入的。某些浏览器可能不支持使用。要了解更多信息,请访问 JavaScript for...of 支持

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战