JavaScript—循环语句

136 阅读5分钟

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})