24个JavaScript循环遍历方法,你都知道吗?( 五 )

总结:
对象方法
遍历基本属性
遍历原型链
遍历不可枚举属性
遍历Symbol
for in




Object.keys()




Object.getOwnPropertyNames()




Object.getOwnPropertySymbols()




Reflect.ownKeys()




三、其他遍历方法1. forfor循环是应该是最常见的循环方式了 , 它由三个表达式组成 , 分别是声明循环变量、判断循环条件、更新循环变量 。这三个表达式用分号分隔 。可以使用临时变量将数组的长度缓存起来 , 避免重复获取数组长度 , 当数组较大时优化效果会比较明显 。
 
const arr = [1,2,3,4,5]for(let i = 0, len = arr.length; i < len; i++ ){console.log(arr[i])}在执行的时候 , 会先判断执行条件 , 再执行 。for循环可以用来遍历数组 , 字符串 , 类数组 , DOM节点等 。可以改变原数组 。
2. whilewhile循环中的结束条件可以是各种类型 , 但是最终都会转为布尔值 , 转换规则如下 。

  • Boolean:true为真 , false为假;
  • String:空字符串为假 , 所有非空字符串为真;
  • Number:0为假 , 非0数字为真;
  • null/Undefined/NaN:全为假;
  • Object:全为真 。
 
let num = 1;while (num < 10){console.log(num);num ++;}while和for一样 , 都是先判断 , 再执行 。只要指定条件为 true , 循环就可以一直执行代码 。
3. do / while该方法会先执行再判断 , 即使初始条件不成立 , do/while循环也至少会执行一次 。
 
let num = 10;do {console.log(num);num--;}while(num >= 0);console.log(num); //-1 
不建议使用do / while来遍历数组 。
4. for await offor await...of方法被称为异步迭代器 , 该方法是主要用来遍历异步对象 。它是ES2018中引入的方法 。
for await...of 语句会在异步或者同步可迭代对象上创建一个迭代循环 , 包括 String , Array , 类数组 , Map ,  Set和自定义的异步或者同步可迭代对象 。这个语句只能在 async function内使用:
 
function Gen (time) {return new Promise((resolve,reject) => {setTimeout(function () {resolve(time)},time)})}async function test () {let arr = [Gen(2000),Gen(100),Gen(3000)]for await (let item of arr) {console.log(Date.now(),item)}}test() 
输出结果:
 
24个JavaScript循环遍历方法,你都知道吗?

文章插图
 




推荐阅读