就让我们在逆战中成长吧,加油武汉,加油自己

1.for循环

使用零时变量将长度存起来,当数组较大时优化效果才会比较明显。

var ar1=[2,4,6,8]
for(var i=0;i<ar1.length;i++){
console.log(i)
  console.log(ar1[i])
}

2.foreach循环

遍历数组中每个数,没有返回值

使用break不能中断循环,使用return也不能返回到外层函数

var ar1=[2,4,6,8]
ar1.foreach((item,index,arr){
//第一个参数代表当前元素
//第二个参数代表当前元素下标
//第三个参数代表原数组
})
//数组中长度多少就循环多少次

3.for-of循环

运行循环获得键值

var ar1=[2,4,6,8]
for(var i of ar1){
console.log(i)
//2,4,6,8
}

for-of可用使用break,continue 和 return 配合使用,跳出循环

for(var i of ar1){
if(i==4){
break
}
console.log(i)//
}

对于普通对象直接遍历的话是会报错的 obj is not iterable

for-of循环不支持普通对象,但如果你想迭代一个对象的属性,你可以用for-in循环(这也是它的本职工作)或内建的Object.keys()方法:

可以使用 Object.keys(obj) 方法将对象的键名生成一个数组,然后遍历这个数组

var obj={
"naem":"张三",
"age":18
}
for(var i of Object.keys(obj)){
console.log(i+":"+obj[i])
//name:张三 age:18
}

4.for-in

只能获得对象的键名,不能获得键值

var obj={
"naem":"张三",
"age":18
}
for(var i in obj){
console.log(i)
//name
//age
}

for...in 循环不仅遍历数字键名,还会遍历手动添加的其它键,甚至包括原型链上的键。for...of 则不会这样

let arr = [1, 2, 3]
arr.set = 'hello' // 手动添加的键
Array.prototype.name = 'word' // 原型链上的键 for(var i in arr) {
console.log(i)
//
//
//
//set
//name
}

for-in是为遍历对象而设计的,不适用于遍历数组。(遍历数组的缺点:数组的下标index值是数字,for-in遍历的index值"0","1","2"等是字符串)

5.map

不会改变原数组,有返回值可用return,成为一个新数组(只是相当于把原数组克隆一份,把克隆的这一份的数组中的对应项改变了)

var ar1=[2,4,6,8,12]
var map1=ar1.map((item)=>{
if(item==6){
return item*2
}
})
console.log(map1)
//[undefined, undefined, 12, undefined, undefined]

之所以会出现undefined,是因为map()方法创建了一个新数组,但新数组并不是在遍历完array1后才被赋值的

下面这样写才是正确的

var map1=ar1.map((item)=>{
if(item == 6){
return item * 2
}
return item
})
console.log(map1)
//[2,4,12,8,12]

5.filter

不会对原数组进行修改 返回新数组

 var filt=ar1.filter((item,index)=>{
//返回索引大于2的元素组成新的数组
if(index>2){
return item
}
})
console.log(filt)
//[8,12]

6.reduce

reduce()作为一个循环使用。接收四个参数:初始值(上一次返回值),当前元素值,当前元素下标,原数组。

var a=[4,5,6,7,8]
//item代表一次回调的值 初始值为0
//cart代表当前元素的值
//index当前下标
//arr原数组
var num=a.reduce((item,cart,index,arr)=>{
return item+=cart
},0)
//初始值为0 console.log(num) //输出为30

7.some

every()与some()方法都是JS中数组的迭代方法。

some()是对数组中每一项运行给定函数,如果该函数满足任一返回true,则返回flase

var a=[1,2,4,69,56,89]
var some1=a.some((item)=>{
return item > 50
})
console.log(some1)//true

8.every()

every()与some()方法都是JS中数组的迭代方法。

every()是对数组中每一项运行给定函数,如果该函数所有项返回true,则返回true。一旦有一项不满足则返回flase

var a=[1,2,4,69,56,89]
var some1=a.every((item)=>{
return item > 50
})
console.log(some1)//flase

JS数组遍历方法集合的更多相关文章

  1. 浅谈6种JS数组遍历方法的区别

    本篇文章给大家介绍一下6种JS数组遍历方法:for.foreach.for in.for of.. each. ().each的区别.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. ...

  2. JS数组遍历方法

    常用数组遍历方法: 1.原始for循环 var a = [1,2,3]; for(var i=0;i<a.length;i++){ console.log(a[i]); //结果依次为1,2,3 ...

  3. js数组遍历方法总结

    数组遍历方法 1.for循环 使用临时变量,将长度缓存起来,避免重复获取数组长度,当数组较大时优化效果才会比较明显. 1 2 3 for(j = 0,len=arr.length; j < le ...

  4. js数组去重方法集合

    //第一种方法,新建一个空数组,将原来的数组循环逐个与新数组的成员做比较,如果新数组没有该元素就push进来 var arr = ['a', 1, 1, 1, 2, 4, 4, 'b', 'c', ' ...

  5. 转→js数组遍历 千万不要使用for...in...

    看到一篇内容还不错,但是排版实在糟糕, 逼死强迫症患者啊,直接拉下去找原文连接,找到了,但是已经消失了···500错误... 第一次因为实在看不下去一篇博客的排版, 为了排版而转载... 转载地址:h ...

  6. js数组遍历和对象遍历

    针对js各种遍历作一个总结分析,从类型用处:分数组遍历和对象遍历:还有性能,优缺点等. JS数组遍历: 1,普通for循环,经常用的数组遍历 var arr = [1,2,0,3,9]; for ( ...

  7. js操作textarea方法集合

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  8. ES6 数组遍历方法的实战用法总结(forEach,every,some,map,filter,reduce,reduceRight,indexOf,lastIndexOf)

    目录 forEach every some map filter reduce && reduceRight indexOf lastIndexOf 前言 ES6原生语法中提供了非常多 ...

  9. 数组遍历方法forEach 和 map 的区别

    数组遍历方法forEach 和 map 的区别:https://www.cnblogs.com/sticktong/p/7602783.html

随机推荐

  1. KUKA机器人常见十大问题及解决方法

    1 开机坐标系无效 世界坐标系是以枪头为基点,在这种坐标系中,机器人所有的动作都是按照以枪头为顶点来完成移动,XYZ方向切割枪方向不改变,如果机器人在世界坐标系中移动,枪头也随着改变方向,那就是我们在 ...

  2. Qt 信号阻塞和断开

    Qt程序中有时候不希望信号槽的触发,在某段流程结束之后,又需要继续回复信号槽状态,这时候可以用阻塞或者断开信号槽的方法来处理. 1. 阻塞方法:bool QObject::blockSignals(b ...

  3. win7+centos6.5安装双系统

    前言:之前在琢磨怎么安装双系统 倒腾了两天终于给装上了 使用软件 镜像:CentOS-6.5-x86_64-bin-DVD1.iso 开机引导软件 easybcd2.2 u盘制作软件 USBWrite ...

  4. 接口测试-chap5-使用正则表达式提取响应数据

    1.导入相关库 import re 2.re.findall(r"前(.+?)后", 匹配源) 3.前:表示要匹配的文本左边的内容 4.后:表示要匹配的文本右边的内容 5.它的返回 ...

  5. Dubbo的集群容错与负载均衡策略

    Dubbo的集群容错策略 正常情况下,当我们进行系统设计时候,不仅要考虑正常逻辑下代码该如何走,还要考虑异常情况下代码逻辑应该怎么走.当服务消费方调用服务提供方的服务出现错误时候,Dubbo提供了多种 ...

  6. 别恐慌,大众关心的人工智能问题学界都在努力求解——我眼中的AAAI 2015大会

    2015大会" title="别恐慌,大众关心的人工智能问题学界都在努力求解--我眼中的AAAI 2015大会"> 作者:微软亚洲研究院副研究员 黄铂钧 今年是美国 ...

  7. 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(python语言)

    # 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? # 斐波那契数列:0,1,1,2,3,5,8,13, ...

  8. Jenkins之邮件通知

    Jenkins默认有一个邮件通知功能,但功能比较单一,能自定义的东西很少,一般使用Extended E-mail Notification插件来发送邮件,EXT Email插件功能比较多,但设置也比较 ...

  9. RocketMQ borker配置文件

    master节点:serverSelectorThreads = 3 brokerRole = SYNC_MASTER serverSocketRcvBufSize = 131072 osPageCa ...

  10. 从社交到IP 庞大手游玩家大军迈向社群化之路

    庞大手游玩家大军迈向社群化之路" title="从社交到IP 庞大手游玩家大军迈向社群化之路"> 移动互联网及相关智能设备的快速迭进,不仅改变了我们的生活方式,也彻 ...