ArkTS语法之循环语句

下面是关于鸿蒙代码中循环语句的详细介绍,包含示例、应用场景及语句分析。

1、语句执行结构:

2、for 循环

语句分析:语法为 for (初始化表达式; 条件表达式; 更新表达式) { 循环体语句 }。初始化表达式在循环开始前执行一次,用于初始化循环变量;条件表达式在每次循环迭代前求值,若为 true 则执行循环体,否则终止循环;更新表达式在每次循环体执行后执行,用于更新循环变量。例如:

在上述代码中,首先声明并初始化为 0,然后每次循环判断 i 是否小于 10,循环体执行后 i 自增 1。此循环会依次打印出 0 到 9。

应用场景:常用于遍历数组、执行固定次数的操作等。比如对一个数组中的元素进行求和操作:

3、while 循环

语句分析:语法是 while (条件表达式) { 循环体语句 }。只要条件表达式的值为 true,就会重复执行循环体。需要在循环外初始化循环变量,并在循环体内更新变量,否则可能导致死循环。例如:

这里先将 j 初始化为 1,每次循环判断 j 是否小于等于 5,若满足则打印 j 并将 j 自增 1循环会打印出 1 到 5。

应用场景:适用于不确定循环次数,但知道循环结束条件的场景。例如,在一个游戏中,只要玩家的生命值大于 0,游戏就持续进行:

3、do...while 循环

语句分析:语法为 do { 循环体语句 } while (条件表达式);

先执行一次循环体,然后再判断条件表达式,若为 true 则继续循环,否则结束循环。例如:

代码先打印 1,然后判断 k 是否小于等于 3,满足则继续循环,最终会打印出 1 到 3。

应用场景:适用于至少需要执行一次循环体的情况,比如在设备连接尝试中,至少尝试一次连接操作:

4、for...in 循环

语句分析:语法是 for (变量 in 对象) { 循环体语句 }。用于遍历对象的可枚举属性或数组的索引,变量在每次迭代时被赋值为当前遍历到的属性名或索引。例如:


此循环会依次打印出对象 obj 的属性名和对应的值。

应用场景:常用于遍历对象的属性,方便对对象的每个属性进行操作,或者在不知道对象具体属性名但需要全部遍历的情况下使用。例如,对一个包含多种配置信息的对象进行统一设置或检查:

5、for...of 循环

语句分析:语法为 for (元素变量 of 可迭代对象) { 循环体语句 }。可用于遍历数组、字符串、映射、集合等可迭代的数据结构,每次迭代返回可迭代对象的一个元素。例如:


循环会依次打印出数组 arr2 中的每个元素。

应用场景:当需要直接遍历可迭代对象中的元素,而不需要关心索引或属性名时,for...of 循环是很好的选择。比如对一个字符串中的每个字符进行处理:

6、循环控制关键字

break:用于终止整个循环,跳出循环体,执行循环后面的语句。例如在查找数组中某个特定元素时,找到后就可以使用 break 跳出循环:


continue:用于跳过当前循环的剩余部分,直接进入下一次循环的条件判断。例如在遍历数组时,跳过某些不符合条件的元素。比如打印 1 到 10 中的奇数:

通过灵活运用这些循环语句及其特性,在鸿蒙开发中能够高效地处理各种重复性任务和数据遍历需求,构建出功能强大且逻辑清晰的应用程序。

### ArkTS 中 `for-in` 循环的用法及范围遍历 在 ArkTS 编程语言中,`for-in` 循环是一种用于迭代对象属性或数组元素的方式。然而,在某些情况下,也可以通过特定方法来实现类似于 Python 的基于范围的循环。 #### 使用 `for-in` 遍历范围 尽管 ArkTS 并未直接提供像 Python 中那样的内置 `range()` 函数支持,但可以通过其他方式模拟这种行为。以下是几种常见的实现方法: 1. **使用索引访问** 如果目标是对一组连续整数执行操作,则可以创建一个包含这些整数的数组并对其进行迭代。 ```typescript let start = 0; let end = 5; for (let i in Array(end - start).fill(0)) { console.log(start + parseInt(i)); } ``` 这里利用了 JavaScript/TypeScript 数组填充技巧[^1],并通过字符串到数字转换实现了类似的效果。 2. **自定义辅助函数** 创建一个简单的帮助器函数以生成指定范围内的一系列数值: ```typescript function* range(start: number, end: number): IterableIterator<number> { for (let i = start; i < end; ++i) yield i; } for (const value of range(1, 6)) { // Note that 'of' works better here than 'in' console.log(value); } ``` 此处采用了生成器模式[^2],使得语法更加简洁明了,并且更接近于传统意义上的 `range` 功能。 3. **结合条件控制语句** 当需要提前终止或者跳过某次迭代时,可引入额外逻辑处理机制,比如 `break`, `continue` 关键字等[^3]: ```typescript const limit = 8; nextValue: for (var index in [...Array(limit)]){ var num = Number(index)+1 ; if(num ===4){ continue nextValue;// Skip printing this particular item. }else if(num >=7 ){ break nextValue ;// Exit entirely once reaching upper boundary. } console.log(`Current Item:${num}`); } ``` 上述例子展示了如何灵活运用不同技术完成复杂需求下的循环管理任务。 #### 注意事项 虽然以上介绍了多种解决方案,但在实际开发过程中还需考虑性能因素以及代码可读性等问题。对于大规模数据集而言,频繁调用构造函数可能会带来不必要的开销;而过度依赖外部库则可能增加项目维护难度。因此建议根据具体场景权衡利弊后再做决定。 ```typescript function createRange(start:number,end:number):number[]{ return new Array(end-start+1).fill(null).map((_,idx)=>start+idx ); } console.log(createRange(-3 ,9 )); //-3,-2,...,8,9 ``` 此片段给出了另一种构建固定间隔序列的方法,它既高效又易于理解。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值