做网站浏览器,中小型教育网站的开发与建设,个人博客系统wordpress,jsp sql 网站开发Nodejs中的#xff0c;除了经典的for循环 , 其实还有几种好用的循环方式#xff0c; 并有典型的使用场景。下面来一起看下#x1f447;#x1f3fb;
5种循环用法
For Loop#xff1a;这是最常见的循环方式#xff0c;适用于你知道循环次数的情况。
for (let i 0; i 除了经典的for循环 , 其实还有几种好用的循环方式 并有典型的使用场景。下面来一起看下
5种循环用法
For Loop这是最常见的循环方式适用于你知道循环次数的情况。
for (let i 0; i 10; i) {console.log(i);
}最常见用法优点是通用基本上各个语言都有这个写法。缺点是有些场景使用不方便。
While Loop当你不知道循环次数但知道循环结束的条件时可以使用 while 循环。
let i 0;
while (i 10) {console.log(i);i;
}For…of Loop这是 ES6 引入的新特性用于遍历数组或其他可迭代对象。
const array [1, 2, 3, 4, 5];
for (const value of array) {console.log(value);
}这种循环本质属于迭代遍历可用于遍历可迭代对象如数组、Map、Set、字符串等。它直接提供了每个元素的值而不是索引或键名。此外这种遍历还可以自定义迭代 内容。
自定义迭代遍历-示例1
const iterable {[Symbol.iterator]() {let i 1;return {next() {if (i 3) {return { value: i, done: false };}return { value: undefined, done: true };},};},
};for (const value of iterable) {console.log(value);
}
// 1
// 2
// 3
或者换种写法 自定义迭代遍历-示例2
const iterable {*[Symbol.iterator]() {yield 1;yield 2;yield 3;},
};for (const value of iterable) {console.log(value);
}
// 1
// 2
// 3
自定义迭代遍历-示例3 early exiting
const source [1, 2, 3];const iterator source[Symbol.iterator]();for (const value of iterator) {console.log(value);if (value 1) {break;}console.log(This string will not be logged.);
}
// 1// Another loop using the same iterator
// picks up where the last loop left off.
for (const value of iterator) {console.log(value);
}
// 2
// 3// The iterator is used up.
// This loop will execute no iterations.
for (const value of iterator) {console.log(value);
}
// [No output]
可以看到迭代器遍历中途中止退出迭代后下次使用相同迭代器可以从上次中止的位置继续迭代遍历。
Array.prototype.forEach这是一个数组方法用于遍历数组。
const array [1, 2, 3, 4, 5];
array.forEach((value, index) {console.log(value);
});它提供了元素值和索引两个参数但不能使用 break 或 continue也不能通过 return 语句跳出循环。
For…in Loop这种循环用于遍历对象的键名。
const obj { a: 1, b: 2, c: 3 };
for (const key in obj) {console.log(key, obj[key]);
}对象友好这种循环用于遍历对象的键名。它不仅可以遍历对象自身的属性还会遍历其原型链上的属性除非属性被标记为不可枚举。
小结
最后小结一下遍历数组可以用 for, while, for of, forEach遍历对象可以用 for in如果想自定义遍历逻辑还可以自定义迭代器。