for of
1. 遍历范围
for...of 循环可以使用的范围包括:
数组
Set
Map
类数组对象,如 arguments 对象、DOM NodeList 对象
Generator 对象
字符串
2. 优势
ES2015 引入了 for..of 循环,它结合了 forEach 的简洁性和中断循环的能力:
<script type="text/javascript">
for (const v of ['a', 'b', 'c']) {
console.log(v);
}
// a b c // entries() 方法返回一个数组的迭代对象,该对象包含数组的键值对 (key/value)
for (const [i, v] of ['a', 'b', 'c'].entries()) {
console.log(i, v);
}
// 0 "a"
// 1 "b"
// 2 "c"
</script>
3. 遍历 Map
<script type="text/javascript">
let arr = [[ 1, 'one' ],[ 2, 'two' ]]
let map = new Map(arr); // 遍历 key 值
for (let key of map.keys()) {
console.log(key);
} // 遍历 value 值
for (let value of map.values()) {
console.log(value);
} // 遍历 key 和 value 值(一)
for (let item of map.entries()) {
console.log(item[0], item[1]);
} // 遍历 key 和 value 值(二)
for (let [key, value] of map) {
console.log(key, value)
}
</script>
4.for...of与for...in的区别
无论是for...in还是for...of语句都是迭代一些东西。它们之间的主要区别在于它们的迭代方式
for...in 语句以原始插入顺序迭代对象的可枚举属性。(包括原型上的属性)
for...of 语句遍历可迭代对象定义要迭代的数据。
<script type="text/javascript">
Object.prototype.objCustom = function() {};
Array.prototype.arrCustom = function() {}; let iterable = [3, 5, 7];
iterable.foo = 'hello'; for (let i in iterable) {
console.log(i); // logs 0, 1, 2, "foo", "arrCustom", "objCustom"
} for (let i in iterable) {
if (iterable.hasOwnProperty(i)) {
console.log(i); // logs 0, 1, 2, "foo"
}
} for (let i of iterable) {
console.log(i); // logs 3, 5, 7
}
</script>
随机推荐
- 测试-spring源码摘取
首次加载idea是真的慢... 也许是我电脑性能太差... 我分析他内部有一套索引的机制,需要每次打开现建立... 没有固态的话,首次打开还不如eclipse 第一次使用博客园,以前都在csdn混~ ...
- 启动fiddler情况下,网络连接错误[Fiddler] The connection to ** failed.解决办法
这种错误是由于浏览器设置了代理,而代理服务器配置不正确导致 解决办法 1.关闭浏览器服务器代理,设置-高级-网络代理 2.检查网络代理设置是否正确,Fiddler中配置的端口号需要跟浏览器中配置的端口 ...
- (二)JPA实体类主键生成策略
在JPA中,配置实体类的主键的生成策略使用 @GeneratedValue @Id @Column(name = "id") @GeneratedValue(strategy = ...
- LR脚本信息函数-lr_get_vuser_ip
lr_get_vuser_ip 返回Vuser的IP地址. char * lr_get_vuser_ip(); lr_get_vuser_ip函数返回Vuser的IP地址. 当执行IP欺骗时,每个Vu ...
- MySQL 性能优化之慢查询
性能优化的思路 首先需要使用慢查询功能,去获取所有查询时间比较长的SQL语句 其次使用explain命令去查询由问题的SQL的执行计划(脑补链接:点我直达1,点我直达2) 最后可以使用show pro ...
- 求求你,别问了,Java字符串是不可变的
最近,又有好几个小伙伴问我这个问题:"二哥,为什么 Java 的 String 要设计成不可变的啊?"说实话,这也是一道非常经典的面试题,面试官超喜欢问.我之前写过这方面的文章,现 ...
- java中int和Integer的区别?为什么有了int还要有设计Integer?
参考https://blog.csdn.net/chenliguan/article/details/53888018 https://blog.csdn.net/myme95/article/det ...
- mybatis-config.xml核心文件配置
一.全局配置文件结构 configuration 配置 properties 属性:可以加载properties配置文件的信息 settings 设置:可以设置mybatis的全局属性 typeAli ...
- Git执行"git rebase -i HEAD~xxx"报错:git rebase fatal: Needed a single revision invalid upstream –i
一.问题"git rebase -i HEAD~xxx"是修改git 历史记录的一个很有用的命令. 但是有时在执行该命令时会出现以下错误:$ git rebase –i HEAD~ ...
- java scoket Blocking 阻塞IO socket通信一
package bhz.bio; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; p ...