首页 > 其他分享 >for in 和 for of 的区别

for in 和 for of 的区别

时间:2022-09-18 11:23:28浏览次数:80  
标签:arr 遍历 数组 区别 value key var

for in 和 for of 简单来说就是它们两者都可以用于遍历,不过for in遍历的是数组的索引(index),而for of遍历的是数组元素值(value)

for in(ES1)

for in和for循环方式历史悠久,从ECMAScript 1就被支持。
for in 用来循环数组不是一个合适的选择。
迭代的是属性key,不是值。
由于属性 key 是字符串,迭代出的元素索引是 string,不是 number,不能直接进行运算,如下

var arr = [1,2,3]
    
for (let index in arr) {
  let res = index + 1
  console.log(res)
}
//01 11 21
for of(ES6)

再来说说ES6 中的 for of
for of遍历的是数组元素值,而且for of遍历的只是数组内的元素,不包括原型属性和索引

var arr = [1,2,3]
arr.a = 123
Array.prototype.a = 123
    
for (let value of arr) {
  console.log(value)
}
//1 2 3

for of适用遍历数/数组对象/字符串/map/set等拥有迭代器对象(iterator)的集合,但是不能遍历对象,因为没有迭代器对象,但如果想遍历对象的属性,你可以用for in循环(这也是它的本职工作)或用内建的Object.keys()方法

var myObject={
  a:1,
  b:2,
  c:3
}
for (var key of Object.keys(myObject)) {
  console.log(key + ": " + myObject[key]);
}
//a:1 b:2 c:3

小结
for in遍历的是数组的索引(即键名),而for of遍历的是数组元素值

for in总是得到对象的key或数组、字符串的下标

for of总是得到对象的value或数组、字符串的值

原文出自:https://blog.csdn.net/L1147484597/article/details/113759039

标签:arr,遍历,数组,区别,value,key,var
From: https://www.cnblogs.com/feitter/p/16704465.html

相关文章

  • 数据库备份差异备份和增量备份的区别
    一般都三种备份种类:完全备份、差异备份、增量备份。完全备份:备份全部选中的文件夹,并不依赖文件的存档属性来确定备份那些文件。(在备份过程中,任何现有的标记都被清除,每个......
  • linux中yum与rpm区别
    一、源代码形式1.绝大多数开源软件都是直接以原码形式发布的2.源代码一般会被打成.tar.gz的归档压缩文件3.源代码需要编译成为二进制形式之后才能够运行使用4.源代码基......
  • JAVA break和continue的区别和应用
    1.break语句:1)打印直角三角星型publicclasstest1{publicstaticvoidmain(String[]args){inti,j;for(i=1;i<=9;i++){//外层循环......
  • dir 和 ls 指令的区别
    dir和ls几乎没什么区别,通过man指令查看帮助,两者之间几乎参数和用法以及说明都是一样的。ls会给目录(文件夹)标记颜色,文件就是普通的白色。dir不会标记任何颜色,目录和......
  • ES6 let关键字和var关键字的区别
    建议:在默认情况下使用const,而只有在你知道变量值需要被修改的情况下使用let......
  • import 库 与from 库import *的区别
    库的导入方式有两种方式第一种:importos#os是库名导入了整个os模块,需要使用句点表示法访问需要的类,例如os.getcwd()#获取当前路径结果输出:'C:\\Users\\ADMINI~......
  • C语言字符串处理函数 strcat()和strncat()的区别及使用
    字符串函数(Stringprocessingfunction)也叫字符串处理函数,指的是编程语言中用来进行字符串处理的函数。本文主要介绍C语言中符串处理函数strcat()和strncat()的区别使用......
  • synchronized和volatile区别
    synchronized和volatile区别synochronizd和volatile关键字区别:volatile关键字解决的是变量在多个线程之间的可见性;而sychronized关键字解决的是多个线程之间访问共享资源......
  • java中公平锁非公平锁的区别
    公平锁:多线程按照申请锁的顺序来获取锁,不会出现争抢的情况。非公平锁:多线程不会按照顺序获取锁,会先尝试去争抢锁,有可能后申请的线程比先申请的线程先抢到锁,在高并发情况下......
  • Transformer中的Position Embedding和RNN/CNN中的Position Encoding的区别
    区别:PositionEmbedding是学习式,PositionEncoding是固定式Transformer的结构是基于Self-Attention的,与RNN/CNN不同,不包含序列信息,但是序列信息又极其重要,为了融合序列信......