在 ES12 中,新增了一种更高效、更便捷的循环方式:循环列表(loop list)。 循环列表是一种新型的迭代器,可以帮助我们更加轻松地遍历和操作数组、集合、对象和字符串等数据结构,提升开发效率和代码质量。
基本语法
循环列表的基本语法如下所示:
for await (let item of list) { // 循环体 }
其中,for await
表示异步循环,可以用来处理异步操作的结果。let item of list
表示在循环过程中,每次取 list
中的一个元素,赋值给 item
变量,然后执行循环体(即花括号 {}
中的代码)。循环列表也支持 break
和 continue
关键词,可以用来控制循环的执行流程。
支持的数据结构
循环列表支持多种数据结构,包括数组、集合、对象和字符串等。下面分别介绍它们的使用方法。
数组
循环数组的方法与普通 for 循环非常相似,只是语法稍有不同。例如:
const arr = [1, 2, 3, 4]; for await (let item of arr) { console.log(item); }
这段代码将依次输出数组中的每个元素:1、2、3、4。与 for 循环相比,循环列表更加简洁,而且可以处理异步任务。
集合
循环集合的方法也非常简单,只需要先将集合转换成数组,然后再使用循环列表。例如:
const set = new Set([1, 2, 3, 4]); const arr = [...set]; for await (let item of arr) { console.log(item); }
这段代码将输出集合中的每个元素:1、2、3、4。由于集合本身不支持异步操作,所以循环列表也不支持异步操作。
对象
循环对象的方法也非常简单,只需要使用 Object.entries()
函数将对象转换成数组,然后再使用循环列表。例如:
const obj = {a: 1, b: 2, c: 3}; const arr = Object.entries(obj); for await (let [key, value] of arr) { console.log(key + ':' + value); }
这段代码将输出对象中的每个键值对:a:1、b:2、c:3。由于对象本身不支持异步操作,所以循环列表也不支持异步操作。
字符串
循环字符串的方法也非常简单,只需要使用 split()
函数将字符串转换成数组,然后再使用循环列表。例如:
const str = 'hello world'; const arr = str.split(' '); for await (let item of arr) { console.log(item); }
这段代码将输出字符串中的每个单词:hello、world。由于字符串本身不支持异步操作,所以循环列表也不支持异步操作。
示例代码
下面是一个示例代码,演示了如何使用循环列表遍历一个数组,并且异步处理其中的元素。
// javascriptcn.com 代码示例 async function asyncFunc(item) { const result = await Promise.resolve(item * 2); console.log(result); } (async function() { const arr = [1, 2, 3, 4]; for await (let item of arr) { await asyncFunc(item); } })();
这段代码将遍历数组 [1, 2, 3, 4]
,并且异步地执行 asyncFunc()
函数,将数组中的每个元素乘以2,最终输出结果:2、4、6、8。
总结
循环列表是 ES12 新增的一个重要功能,帮助开发者更加轻松地遍历和操作多种数据结构,提升开发效率和代码质量。在实际开发中,我们可以根据具体情况选择不同的数据结构和循环方式,以达到最优的效果。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6547df847d4982a6eb232808