for/of、Object.entries()
本文最后更新于:2 小时前
for/of、Object.entries()
for/of
for/of循环专门用于可迭代对象。现在只要知道数组、字符串、集合和映射都是可迭代的就行了。它们都是一组或一批元素,可以使用for/of循环来循环或迭代这些元素。
1 | |
在上面的代码中,循环体对应data数组中的每个元素都会运行一次。在每次执行循环体之前,都会把数组的下一个元素赋值给元素变量。数组元素是按照从头到尾的顺序迭代的。
数组迭代是“实时”的,即迭代过程中的变化可能影响迭代的输出。如果修改前面的代码,在循环内添加一行data.push(sum),则会创建一个无穷循环。因为迭代永远不会触及数组的最后一个元素。
1 | |
for/of与对象
Object.keys()、Object.values()
对象(默认)是不可迭代的。运行时尝试对常规对象使用for/of会抛出TypeError
1 | |
如果想迭代对象的属性,可以使用for/in循环,或者基于Object.keys()方法的结果使用for/of
1 | |
这是因为Object.keys()返回一个对象属性名的数组,而数组是可以通过for/of来迭代的。也要注意,这种对象的键的迭代并不像上面例子那样是实时的,在循环体内修改对象o不会影响迭代。
如果你不在乎对象的键,也可以像下面这样**迭代每个键对应的值 **
1 | |
如果你既想要对象属性的键,也想要属性的值,可以基于Object.entries()和解构赋值来使用for/of
1 | |
Object.entries()返回一个数组的数组,其中每个内部数组表示对象的一个属性的键/值对。这里使用解构赋值把这些内部数组拆开,并将它们的元素赋值给两个变量
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!