for():基本循环
for(var i=0;i<5;i++){
...
break; //中止所有循环
...
continue; //继续循环
}
变式
①
for(var i=0,len=arr.length;i<len;i++){}
②
var i=0,len=arr.length
for(;i<len;i--){}
③
var i=0,len=arr.length
for(;i<len;){
i++
}
④
for(varni=5;i;){
//默认i小于0
i--
}
⑤
for(var i=0;j=5;i<5;j>0;i++;j--){}
for in:循环key或index
var obj={a;0,b:1,c:2}
var arr=[0,1,2]
for(var i in obj){
//i为对象属性名
}
for(let i in arr){
//i为数组索引值
}
do while():条件循环
while(){}
const index = 0
while(index<5){
index++
}
do{
index++
}while(index<5)
for of:循环value值
for(let v of arr){
...
break; //中止所有循环
...
continue; //继续循环
}
Array循环
forEach():一般循环
对数组中的每一项执行函数,无返回值
arr.forEach(function(value,index,arr){
},thisValue)
参数
value:必需。当前元素
index:可选。当前元素的索引值
arr:可选。当前元素所属的数组对象
thisValue:可选。传递给函数的值一般用this值。如果这个参数为空,undefinde会传递给this值
无返回值
注:对于空数组是不会执行回调函数
示例
arr.forEach(v=>{})
arr.forEach((v,i)=>{})
map():循环处理元素
对数组中的每一项执行函数并构造一个新数组,其中包含与原始数组中的每一项的函数结果相对应的项
const newArr = arr.map(function(value,index,arr){
...
return value+1
},thisValue)
参数
value:必需。当前元素
index:可选。当前元素的索引值
arr:可选。当前元素所属的数组对象
thisValue:可选。传递给函数的值一般用this值。如果这个参数为空,undefinde会传递给this值
返回值是一个新数组
注:对于空数组是不会执行回调函数的
示例
const newArr = arr.map(v=>{return value+1})
const newArr = arr.map((v,i)=>{return value+1})
filter():过滤
1.对数组中的每一项执行测试函数,并构造一个新数组,其中的所有项都对指定的函数返回true。如果某项返回false,则新数组中将不包含此项。
2.创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素
const newArr = arr.filter(function(value,index,arr){
...
return value>2
},thisValue)
参数
value:必需。当前元素
index:可选。当前元素的索引值
arr:可选。当前元素所属的数组对象
thisValue:可选。传递给函数的值一般用this值。如果这个参数为空,undefinde会传递给this值
返回值是过滤后的新数组
注:对于空数组是不会执行回调函数的
示例
const newArr = arr.filter(v=>{return v>2})
const newArr = arr.filter((v,i)=>{return v>2})
every():全真为true
只要有一个为false,则返回false;反之,返回true
const bool = arr.every(function(value,index,arr){
return value>1
},thisValue)
参数
value:必需。当前元素
index:可选。当前元素的索引值
arr:可选。当前元素所属的数组对象
thisValue:可选。传递给函数的值一般用this值。如果这个参数为空,undefinde会传递给this值
返回值是一个布尔值
注:对于空数组是不会执行回调函数的
示例
const bool = arr.every(v=>{return value>1})
const bool = arr.every((v,i)=>{return value>1})
some():一个为真为true
只要有一个为真,则返回true,反之,返回false
const bool = arr.some(function(value,index,arr){
return value>1
},thisValue)
参数
value:必需。当前元素
index:可选。当前元素的索引值
arr:可选。当前元素所属的数组对象
thisValue:可选。传递给函数的值一般用this值。如果这个参数为空,undefinde会传递给this值
返回值是一个布尔值
注:对于空数组是不会执行回调函数的
示例
const bool = arr.some(v=>{return value>1})
const bool = arr.some((v,i)=>{return value>1})
reduce():将数组元素计算为一个值(从左到右)
1.接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值
2.可以作为一个高阶函数,用于函数的compose
const num = arr.reduce(function(total,value,index,arr){
return value>1
},initialValue)
参数
total:必需。初始值,或者计算结束后的返回值
value:必需。当前元素
index:可选。当前元素的索引值
arr:可选。当前元素所属的数组对象
initialValue:可选。传递给函数的初始值
返回值是一个布尔值
注:对于空数组是不会执行回调函数的
示例
const num = arr.reduceRight((total,value)=>{return total + value})
reduceRight():将数组元素计算为一个值(从右到左)
功能与reduce一样,不同的是reduceRight()从数组的末尾向前将数组中的数组项做累加
const num = arr.reduceRight(function(total,value,index,arr){
return value>1
},initialValue)
参数
total:必需。初始值,或者计算结束后的返回值
value:必需。当前元素
index:可选。当前元素的索引值
arr:可选。当前元素所属的数组对象
initialValue:可选。传递给函数的初始值
返回值是一个布尔值
注:对于空数组是不会执行回调函数的
示例
const num = arr.reduceRight((total,value)=>{return total + value})
find():返回符合条件的第一个元素
1.返回通过测试(函数内判断)的数组的第一个元素的值
2.当数组中的元素在测试条件时返回true时,find()返回符合条件的元素,之后的值不会再调用执行函数
3.如果没有符合条件的元素返回undefinde
const value = arr.find(function(value,index,arr){
...
return value>0
},thisValue)
参数
value:必需。当前元素
index:可选。当前元素的索引值
arr:可选。当前元素所属的数组对象
thisValue:可选。传递给函数的值一般用this值。如果这个参数为空,undefinde会传递给this值
返回值是一个新数组
注:
①对于空数组,函数是不会执行的
②并没有改变数组的原始值
③兼容性:非IE
示例
const value = arr.find(v=>{return value>0})
findIndex():返回符合条件的第一个元素的索引值
1.返回传入一个测试条件(函数)符合条件的数组第一个元素位置
2.当数组中的元素在测试条件时返回true时,findIndex()返回符合条件的元素的索引位置,之后的值不会再调用执行函数
3.如果没有符合条件的元素返回-1
const index = arr.findIndex(function(value,index,arr){
...
return value>0
},thisValue)
参数
value:必需。当前元素
index:可选。当前元素的索引值
arr:可选。当前元素所属的数组对象
thisValue:可选。传递给函数的值一般用this值。如果这个参数为空,undefinde会传递给this值
返回值是一个新数组
注:
①对于空数组,函数是不会执行的
②并没有改变数组的原始值
③兼容性:非IE
示例
const index= arr.findIndex(v=>{return value>0})