跳至主要內容

TS 循环

周子力大约 5 分钟教学文档HarmonyOSTypeScript

TS 循环

1.什么是循环?

循环是指在一定条件下,重复执行一系列任务。

TypeScript 中的 for 循环和 for...in 循的使用就和 JavaScript 中的一样。此外,TypeScript 中还还支持 for…offorEacheverysome 循环。

2.for 循环

TypeScript 语言中的 for 循环可以用于多次执行一个代码块。例如一句代码重复执行 10 次、100 次、1000 次等,都可以通过循环来实现。

语法如下所示:

for (init; condition; increment) {
  //代码块
}

其中 init 是循环控制变量,会在循环最开始的时候执行,且只会执行一次。condition 是循环条件,当条件为 true 时会执行循环中的代码块,为 false 时则停止执行循环。increment 用于更新循环控制变量,当循环中的代码块执行完毕后,控制流会跳回到这个语句。

let num: number = 10;
let i: number;
for (i = 0; i < num; i++) {
  console.log(i);
}
let sum: number = 0;

for (let i: number = 1; i <= 10; i++) {
  sum += i;
}

console.log(sum); // 输出结果为 55

3.while 循环

while 循环是另一种常用的循环结构,它会根据指定的条件反复执行一段代码,直到条件不成立为止。它具有以下语法:

while (条件表达式) {
  // 待执行的代码块
}
let i: number = 1;

while (i <= 5) {
  console.log(i);
  i++;
}

在上述代码中,我们使用 while 循环不断输出变量 i 的值,并在每次循环结束后将 i 的值递增。当 i 的值超过 5 时,条件表达式 i <= 5 不再成立,循环结束。

4.do...while 循环

do-while 循环与 while 循环类似,但它会先执行一次循环内的代码块,然后再判断条件是否成立。因此,无论条件是否成立,do-while 循环至少会执行一次。

do {
  // 待执行的代码块
} while (条件表达式);
let sum: number = 0;
let i: number = 1;

do {
  sum += i;
  i++;
} while (i <= 5);

console.log(sum); // 输出结果为 15

在上述代码中,我们使用 do-while 循环将变量 i 的值加到 sum 上,并在每次循环结束后递增 i。当 i 的值超过 5 时,条件表达式 i <= 5 不再成立,循环结束。

5.循环控制

在循环中,我们还可以使用以下控制语句来改变循环的行为:

  • break:用于终止循环,并跳出循环体。
  • continue:用于跳过当前迭代,继续下一次迭代。

这些控制语句通常结合条件语句使用,以实现更灵活的循环控制。

下面是一个使用 breakcontinue 的示例:

let sum: number = 0;

for (let i: number = 1; i <= 10; i++) {
  if (i === 5) {
    break; // 当 i 等于 5 时终止循环
  }

  if (i === 3) {
    continue; // 当 i 等于 3 时跳过当前迭代,继续下一次迭代
  }

  sum += i;
}

console.log(sum); // 输出结果为 12

在上述代码中,当变量 i 的值等于 5 时,使用 break 终止循环;当 i 的值等于 3 时,使用 continue 跳过当前迭代,继续下一次迭代。

6.for…in 循环

for...infor 循环的另一个变体, for...in 语句可以用于一组值的集合或列表进行迭代输出。

语法格式如下所示:

for (let val in list) {
  //代码块
}

val 的数据类型为 string 或者 any 类型。

示例: 例如我们声明一个数组,然后使用 for...in 循环来遍历这个数组:

let myArr: string[] = ["a", "b", "c", "d"];
let i: string;
for (i in myArr) {
  console.log(myArr[i]);
}

7.for...of 循环

ES6 中引入了 for...of 循环,用来替代for...inforEach()for...of 语句创建一个循环来迭代可迭代的对象。可以用于遍历字符串、数组、映射、集合等可迭代的数据结构。

let myArr: string[] = ["a", "b", "c", "d"];
let i;
for (i of myArr) {
  console.log(i);
}

8.forEach 循环

forEach() 方法是一个数组方法,用于对数组中的每个项执行一个函数。

语法如下所示

array.forEach(callback[, thisObject]);

forEach() 方法按升序对数组中的每个元素执行一次提供的回调。callback 回调函数时一个用于测试每个元素的函数,接受三个可选参数,第一个参数为元素值 value ,第二个参数为元素索引 index,第三个参数为 Array,是一个在 forEach() 方法中迭代的数组。thisObject 是执行回调时使用的对象。

let username: string[] = ["杨过", "黄蓉", "郭靖", "梅超风"];
username.forEach(function (item) {
  console.log(item);
});

9.every 循环

every() 方法测试数组中的所有元素是否通过由提供的函数实现的测试。如果数组中的每个元素都满足提供的测试功能,则返回 true。否则返回 false

array.every(callback[, thisObject]);

every() 方法的语法和forEach() 方法类似,其中 callback 是一个回调函数,thisObject 为执行回调时用作此对象的对象。

let numArr: number[] = [1, 2, 3, 4, 5];

let result = numArr.every(function compare(element, index, array) {
  return element < 10;
});
console.log(result);

10.some 循环

some() 方法用于测试数组中的某些元素是否通过由提供的函数实现的测试。

some() 方法和 every() 方法很类似,但是两者又还有一些区别,some() 方法会遍历数组中的每一项,如果其中一项为 true,则返回值为 true。every() 方法则需要全部为 true ,结果才为 true。

let numArr: number[] = [7, 10, 15, 21];

let result = numArr.some(function compare(element, index, array) {
  return element < 10;
});
console.log(result);

上述代码中只要数组 numArr 中的有任何一个元素通过了由函数compare 提供的测试,结果返回值就会为 true。很明显,数组中有一个元素 7,满足小于 10 这个条件,所以最终代码输出结果为 true

上次编辑于:
贡献者: zilizhou,安润鲁