如何优雅的遍历Set?

let s = new Set();
如何遍历这个set?
各位js大佬应该没少给for(let v of s){xxxx}坑过

这样写是不会成功遍历的!
这样写是不会成功遍历的!
这样写是不会成功遍历的!

为什么会不行,看看转译后的代码就知道了,转译后是经典for-i形式,然而set是不能for-i的。

不过其实我不是来吐槽ccc的,毕竟能兼容部分常用es6也算是不错的了,不完全支持肯定是有什么深层的考虑的。

所以自己弄了一个比较优雅的遍历方式,分享一下(可弄成live template复用)

for(let it = s.values(), v = it.next(), i=0; !v.done; v= it.next(), i++){
    console.log(i, v.value);
}

好处:

1.带索引i(可选)
2.可以break
3.不用在scope外定义辅助变量

为何不用forEach?因为无法break

哪位大佬有其他好写法欢迎分享~~:2:

test1 = {a:1,b:2,c:3}
Object.keys(test1).forEach((x)=> console.log(test1[x]))

forEach不能break,今天刚好做一个应用,性能极限,所以要用能剪枝的遍历

牛逼:cow2: