【只会for循环? 来看下, Nodejs中典型的5种循环方式】
2024-05-22 本文已影响0人
wn777
Nodejs中的,除了经典的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,如果想自定义遍历逻辑还可以自定义迭代器。