js数组遍历(for in ,for of ,map,foreach,filter)的区别
一.for in 和for of 的区别
1.for in 遍历数组时,索引实际上是字符串类型的数字,不能进行运算,我们来输出一下:
for (let index in arr) {
console.log(typeof index)
}
结果:

2.遍历的顺序有可能不是数组内部的顺序(这个我没有试出来,如果找到例子,以后我再更新)
3.for in 会遍历数组内所有可枚举的属性,包括原型上的属性和方法
let arr = [1,3,5,4]
arr.name = "数组"
for (let index in arr) {
console.log(arr[index])
}
结果:

所以,for in更适合遍历对象,尽量不要使用for in 遍历数组
使用for in 遍历对象时,index为该对象的键,Object[index]能取到每个键对应的值,来看下面的例子:
let obj = {
name:"张三",
age:21,
work:"前端"
}
for (let index in obj) {
console.log("key为---",index,"val为---",obj[index])
}
结果:

2.foreach
foreach会从头到尾对数组里的每个元素遍历一遍 ,他不会生成新数组,也不改变原数组,回调函数接收三个值,分别是 数组的元素,索引和当前数组
let arr = ["a","b","c","d"]
arr.forEach((el,index,array) => {
if(el == "b" ) return
console.log(el,index,array)
})
结果:

在上边的例子中我加了一个判断,如果满足元素等于b,return出去,按理说遍历时满足这个条件后边就不遍历了,但是foreach不会,他会接着向下进行
3.map
和foreach类似,map也会把数组的每一项都遍历一遍,他会返回一个新数组,但是原数组保持不变,值得注意的是,map不会对空数组进行检测
let arr = [1,2,3,4,5]
let b = arr.map((el,val,array) => {
return el > 2
})
console.log(b)
结果:

4.filter
filter为过滤的意思,也就是说它会把满足条件的元素拿出来形成一个新的数组
let arr = [,,,,,,,,]
let result = arr.filter(el => {
return el % ==
})
console.log(result)
结果:

巧妙的运用filter去除数组中重复的元素:
结果:

js数组遍历(for in ,for of ,map,foreach,filter)的区别的更多相关文章
- js数组遍历和对象遍历
针对js各种遍历作一个总结分析,从类型用处:分数组遍历和对象遍历:还有性能,优缺点等. JS数组遍历: 1,普通for循环,经常用的数组遍历 var arr = [1,2,0,3,9]; for ( ...
- 浅谈6种JS数组遍历方法的区别
本篇文章给大家介绍一下6种JS数组遍历方法:for.foreach.for in.for of.. each. ().each的区别.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. ...
- 转→js数组遍历 千万不要使用for...in...
看到一篇内容还不错,但是排版实在糟糕, 逼死强迫症患者啊,直接拉下去找原文连接,找到了,但是已经消失了···500错误... 第一次因为实在看不下去一篇博客的排版, 为了排版而转载... 转载地址:h ...
- JS数组遍历的十二种方式
遍历有如下几种方式 数组方法 map forEach filter find findIndex every some reduce reduceRight 其他方法 for for in for o ...
- JS002. map( ) 和 filter( ) 的区别和实际应用场景(递归函数、深度优先搜索DFS)
在开发过程中难免会碰到省市区级联的操作,一般后端人员是不愿意将中文储存在数据库的. 由于应用页面较多,我们在通过区域Code写查字典函数时应该注意函数的 时间复杂度 / 空间复杂度. 如果用三层for ...
- for, for in, for of, map, forEach 循环的区别:
for, for in, for of, map, forEach 循环的区别: for 遍历数组: //对象遍历数组 var arr = [ {Monday: '星期一', Tuesday: ' ...
- js数组遍历some,foreach,map,filter,every对比
1. [...].some(ck)函数 ---- 某个一个为true,则为true 对数组中每个元素执行一次ck函数,知道某个元素返回true,则直接返回true.如果都返回f ...
- JS数组遍历方法
常用数组遍历方法: 1.原始for循环 var a = [1,2,3]; for(var i=0;i<a.length;i++){ console.log(a[i]); //结果依次为1,2,3 ...
- js 数组遍历
map.filter.forEach.every.some http://www.runoob.com/jsref/jsref-obj-array.html 1.在字符串中使用 map 在一个Stri ...
- js数组遍历方法总结
数组遍历方法 1.for循环 使用临时变量,将长度缓存起来,避免重复获取数组长度,当数组较大时优化效果才会比较明显. 1 2 3 for(j = 0,len=arr.length; j < le ...
随机推荐
- 如何解决-win7系统打开截图工具显示“截图工具当前未在计算机上运行”
打开win7系统自带截图工具,显示"截图工具当前未在计算机上运行.请重新启动计算机,然后重试", 解决方法 1.首先在C盘中搜索tpcps.dll: 2.将数据最大那个tpcp ...
- consoleWriter.go
package blog4go import ( "fmt" "os" "time" ) // ConsoleWriter is a con ...
- grpc.go
package,,), etcd.WithPrefix(), etcd.WithPrevKV()} gw.wch = gw.c.Watch(gw.ctx, gw.target, opts... ...
- 【LOJ #6094. 「Codeforces Round #418」归乡迷途】
题目大意: 传送门. lca说的很明白就不重复了. 题解: 先膜一发lca. 大体读完题以后我们可以知道对于第i个节点最短路一定是连向1到i-1中的某个点. 然后我们考虑将到1距离(这里及以下均是最短 ...
- Luogu_2597_[ZJOI2012]灾难 倍增lca + 构造
Luogu_2597_[ZJOI2012]灾难 倍增lca + 构造 题意: 我们用一种叫做食物网的有向图来描述生物之间的关系:一个食物网有N个点,代表N种生物,如果生物x可以吃生物y,那么从y向x连 ...
- Django之META与前后端交互
Django之META与前后端交互 1 提交表单之GET 前端提交数据与发送 1)提交表单数据 2)提交JSON数据 后端的数据接收与响应 1)接收GET请求数据 2)接收POST请求数据 3)响应请 ...
- SPPNET
SPPNet Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition 文章地址:https://ar ...
- JAVA基础第三章-类与对象、抽象类、接口
业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...
- 安卓开发常用icon/png图样
平时开发当中会用到很多png图样,但是自己又不太会做,因此做好的办法就是直接在网上下载下来用了,这里给大家推荐一个比较好用的网站,免费的,有很多好的png可以直接下载下来使用. http://www. ...
- 国际知名CSS Reset 总结
NO.01 CSS Tools: Reset CSS 网站:https://meyerweb.com/eric/tools/css/reset/ 优点:老牌,用的人多. /* http://mey ...