for-each、for-in和for-of的区别

1、forEach()方法

用于调用数组的每个元素,并将元素传递给回调函数。

注意: forEach() 对于空数组是不会执行回调函数的。

array.forEach(function(currentValue, index, arr), thisValue)
参数1:function(currentValue, index, arr) 必需。 数组中每个元素需要调用的函数。
参数2: thisValue 可选。传递给函数的值一般用 "this" 值。
           如果这个参数为空, "undefined" 会传递给 "this" 值 示例:
<button onclick="numbers.forEach(myFunction)">点我</button>

<p>数组元素总和:<span id="demo"></span></p>

<script>
var sum = 0;
var numbers = [65, 44, 12, 4]; function myFunction(item) {
sum += item;
demo.innerHTML = sum;
}
</script>

常用写法:

objArr.forEach(

  function (value) { console.log(value); }

);

注意:foreach 方法没办法使用 break 语句跳出循环,或者使用return从函数体内返回


2、for-in

for(var index in objArr){
console.log(objArr[index])
}

for-in会获取到数组的下标、会获取到对象的key值

所以for in更适合遍历对象,不要使用for in遍历数组

var arr=[1,2,3,4,5]
var obj={
key1:'value1',
key2:'value2',
key3:'value3',
key4:'value4',
}
//console.log(arr)
//console.log(obj) for(var i in arr){
console.log(i)
}
for(var i in obj){
console.log(i)
} for(var i of arr){
console.log(i)
}
for(var i of obj){
console.log(i)
}


3、for-of

for(let value of objArr){
console.log(value)
}

for-of会获取到数组的每一个的值,更适合于数组对象,不要用于对象

可以使用 breakcontinue 和 return

也支持字符串的遍历

    var arr=[1,2,3,4,5]
var obj={
key1:'value1',
key2:'value2',
key3:'value3',
key4:'value4',
}
var arObj=[
{k11:'value11'},
{k22:'value22',k21:'value21'},
{k33:'value33',k32:'value32',k31:'value31'},
]
//console.log(arr)
//console.log(obj) for(var i in arr){
console.log(i)
}
for(var i in obj){
console.log(i)
} for(var i of arr){
console.log(i)
}
// for(var i of obj){
// console.log(i)
// }
for(var i of arObj){
console.log(i)
}

 

for-each、for-in和for-of的区别的更多相关文章

  1. In-Memory:内存数据库

    在逝去的2016后半年,由于项目需要支持数据的快速更新和多用户的高并发负载,我试水SQL Server 2016的In-Memory OLTP,创建内存数据库实现项目的负载需求,现在项目接近尾声,系统 ...

  2. Python中的多进程与多线程(一)

    一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...

  3. Tomcat一个BUG造成CLOSE_WAIT

    之前应该提过,我们线上架构整体重新架设了,应用层面使用的是Spring Boot,前段日子因为一些第三方的原因,略有些匆忙的提前开始线上的内测了.然后运维发现了个问题,服务器的HTTPS端口有大量的C ...

  4. 你必须知道的EF知识和经验

    注意:以下内容如果没有特别申明,默认使用的EF6.0版本,code first模式. 推荐MiniProfiler插件 工欲善其事,必先利其器. 我们使用EF和在很大程度提高了开发速度,不过随之带来的 ...

  5. 关于.NET异常处理的思考

    年关将至,对于大部分程序员来说,马上就可以闲下来一段时间了,然而在这个闲暇的时间里,唯有争论哪门语言更好可以消磨时光,估计最近会有很多关于java与.net的博文出现,我表示要作为一个吃瓜群众,静静的 ...

  6. CSS的未来

    仅供参考 前言 完成<CSS核心技术与实战>这本书,已有一个多月了,而这篇文章原本是打算写在那本书里面的,但本章讲解的内容,毕竟属于CSS未来的范畴,而这一切都还不能够确定下来,所以这一章 ...

  7. C# DateTime与时间戳转换

    C# DateTime与时间戳的相互转换,包括JavaScript时间戳和Unix的时间戳. 1. 什么是时间戳 首先要清楚JavaScript与Unix的时间戳的区别: JavaScript时间戳: ...

  8. 【.net 深呼吸】细说CodeDom(1):结构大观

    CodeDom 是啥东东?Html Dom听过吧,XML Dom听过吧.DOM一般可翻译为 文档对象模型,那 Code + DOM呢,自然是指代码文档模型了.如果你从来没接触过 CodeDom,你大概 ...

  9. react-router 组件式配置与对象式配置小区别

    1. react-router 对象式配置 和 组件式配置    组件式配置(Redirect) ----对应---- 对象式配置(onEnter钩子) IndexRedirect -----对应-- ...

  10. 十分钟介绍mobx与react

    原文地址:https://mobxjs.github.io/mobx/getting-started.html 写在前面:本人英语水平有限,主要是写给自己看的,若有哪位同学看到了有问题的地方,请为我指 ...

随机推荐

  1. IPC 之 Socket 的使用

    一.概述 我们知道在开发中,即时通讯.设备间的通信都是使用 Socket 实现,那当然用它来实现进程间通信更是不成问题.Socket 即套接字,是一个对 TCP / IP协议进行封装 的编程调用接口( ...

  2. Golang简单日志类

    实现简单的日志写入文件功能运行环境:golang1.4.2+win7x64golang1.4.2+centos6.5×64 package Helper import ( “fmt” “log” “o ...

  3. Codeforces 1043 F - Make It One

    F - Make It One 思路: dp + 容斥 首先, 答案不会超过7, 因为前7个质数的乘积大于3e5(最坏的情况是7个数, 每个数都缺少一个不同的因子) 所以从1到7依次考虑 dp[i][ ...

  4. mac显示影藏文件

    http://blog.csdn.net/xiaoyuanzhiying/article/details/46694577 然后finder强制退出,然后重启.

  5. Skip level 1 on 1

    2019-01-08 16:43:29 Skip level 1:1 什么是 Skip level 1 on  1 :你和你老板的老板(的老板) 1:1 如果你的老板是first line manag ...

  6. 新C# 操作Excel属性

    C# 操作Excel属性 数字(Range.NumberFormatlocal 属性) 常规:Range.NumberFormatlocal = "G/通用格式" 数值:Range ...

  7. 20190118_xlVBA多表合并

    Public Sub simple() Set wb = ActiveWorkbook Set sht = ActiveSheet msg = MsgBox("程序准备清除活动工作表内容?按 ...

  8. android -------- Data Binding的使用(三)Observable

    解决:databinding 中 ViewModel数据发生改变,View中也要改变(实时更新) BaseObservable 在ViewModel 中可以继承 BaseObservable publ ...

  9. Linux虚拟机安装VMware Tools

    选择虚拟机-->install VMware Tools # 新建一个文件夹用来挂载光驱 mkdir /mnt/cdrom # 挂载光驱到指定文件夹 mount /dev/sr0 /mnt/cd ...

  10. 5月21 汽车查询及批量删除----php方法

    ---恢复内容开始--- 这个与之前不同是在php中实现了页面的查询,引用AJAX实现批量删除及弹窗的显示 作业要求: 页面显示数据代码: <!DOCTYPE html PUBLIC " ...