for ... of 循环
Version >= 6
const iterable = [0, 1, 2];
for (let i of iterable) {
console.log(i);
}
预期输出:
0
1
2
循环的优点是:
- 这是循环数组元素的最简洁,直接的语法
- 它避免了……中的所有陷阱
- 与
forEach()
不同,它适用于 break,continue 和 return
支持其他馆藏
字符串
for … of 将字符串视为 Unicode 字符序列:
const string = "abc";
for (let chr of string) {
console.log(chr);
}
预期输出:
a b c
集
for …对 Set 对象的工作 。
注意 :
- Set 对象将消除重复。
- 有关
Set()
浏览器支持,请查看此参考 。
const names = ['bob', 'alejandro', 'zandra', 'anna', 'bob'];
const uniqueNames = new Set(names);
for (let name of uniqueNames) {
console.log(name);
}
预期输出:
bob
alejandro
zandra
anna
地图
你还可以使用 for 循环迭代 Map 。这类似于数组和集合,除了迭代变量存储键和值。
const map = new Map()
.set('abc', 1)
.set('def', 2)
for (const iteration of map) {
console.log(iteration) //will log ['abc', 1] and then ['def', 2]
}
你可以使用解构分配来分别捕获键和值:
const map = new Map()
.set('abc', 1)
.set('def', 2)
for (const [key, value] of map) {
console.log(key + ' is mapped to ' + value)
}
/*Logs:
abc is mapped to 1
def is mapped to 2
*/
对象
for … of 循环不能直接在普通对象上工作; 但是,可以通过切换到 for … in 循环或使用 Object.keys()
来迭代对象的属性 :
const someObject = { name: 'Mike' };
for (let key of Object.keys(someObject)) {
console.log(key + ": " + someObject[key]);
}
预期输出:
姓名:迈克