📅  最后修改于: 2023-12-03 15:05:39.991000             🧑  作者: Mango
在JavaScript中,我们可以使用for
循环、while
循环和do...while
循环来对一个数据集合进行迭代。但有时我们需要对一个不确定长度的数据集合进行迭代,此时我们就需要使用不定循环。
TypeScript中有两种不定循环,分别是for...of
循环和forEach()
方法。下面将会对它们进行详细介绍。
for...of
循环可以用来循环可迭代对象(如数组、Map、Set、字符串等)。与普通的for
循环类似,但代码更简洁易读。
const numbers = [1, 2, 3, 4, 5];
for (const num of numbers) {
console.log(num);
}
上述代码会输出以下内容:
1
2
3
4
5
具体来说,for...of
循环每次循环都会将集合中的下一个元素赋值给定义的迭代变量(如上例的num
)。因此,它可以自动跟踪数组的下标并遍历每个元素。
需要注意的是,for...of
循环无法直接遍历普通对象(Object类型),因为普通对象不是一个可迭代对象。但可以使用Object.keys(obj)
方法将对象转换为一个数组,再使用for...of
循环遍历:
const person = { name: 'Alice', age: 30 };
for (const key of Object.keys(person)) {
console.log(`${key}: ${person[key]}`);
}
上述代码会输出以下内容:
name: Alice
age: 30
forEach()
方法是数组对象的一个成员方法,用于遍历数组中的每个元素,并对每个元素执行指定的操作。语法如下:
arr.forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void;
其中,callbackfn
为回调函数,用于指定对每个元素执行的操作。它接收三个参数:当前元素的值、当前元素的下标(可选)、数组本身(可选)。thisArg
为可选参数,用于指定回调函数中的this
的值。
下面是一个简单的例子,展示如何使用forEach()
方法遍历数组:
const numbers = [1, 2, 3, 4, 5];
numbers.forEach(num => console.log(num));
上述代码会输出以下内容:
1
2
3
4
5
对于需要使用当前元素的下标或数组本身的操作,可以在回调函数中分别使用index
和array
参数,例如:
const numbers = [1, 2, 3, 4, 5];
numbers.forEach((num, index) => console.log(`numbers[${index}] = ${num}`));
上述代码会输出以下内容:
numbers[0] = 1
numbers[1] = 2
numbers[2] = 3
numbers[3] = 4
numbers[4] = 5
需要注意的是,forEach()
方法无法使用break
语句来跳出循环。如果需要在迭代过程中跳出循环,可以使用some()
方法或自定义的循环控制语句。