数组的迭代方法

2019-07-09  本文已影响0人  h5溧水大表哥

ES5为数组定义了5个迭代的方法。每个方法都接收两个参数:
1)要在每一项上运行的函数
2)运行该函数的作用域对象--影响this的值(可选)。
运行的函数会接受三个参数:1)数组项的值 2)该项在数组中的位置 3)数组对象本身。
1、.every()
对数组的每一项运行给定函数,如果该函数对每一项都返回true,则返回true。类似于逻辑与,所有都满足的条件的情况下返回true:

var arr = [1,5,9,7,25,16,30]
    var result = arr.every(function(item,index,array){
    return item > 0
})
console.log(result)
image.png

这里的条件时数组中的内容大于0,原数组中的所有内容都大于0,所以这里返回的是true;
只要有一项不满足条件则输出false:

var arr = [1,5,9,7,25,16,30]
    var result = arr.every(function(item,index,array){
    return item > 5
})
console.log(result)

这里条件时大于5,此数组中有小于5的项,所以返回false:


image.png

2、.some()
对数组的每一项运行给定函数,如果该函数对任一项返回true,则返回true。正好和every相反,与逻辑或的方法相近,数组中有满足条件的内容时返回true:

var arr = [1,5,9,7,25,16,30]
    var result = arr.some(function(item,index,array){
    return item > 5
})
console.log(result)

这里条件时内容大于5,原数组中存在大于5的项,所以输出true:


image.png

当全都不满足条件时输出false:

var arr = [1,5,9,7,25,16,30]
    var result = arr.some(function(item,index,array){
    return item < 0;
})
 console.log(result)

这里的条件是小于0,原数组中所有项都不小于0,所以输出false


image.png

3、.filter()
对数组的每一项运行给定函数,返回该函数会返回true的项组成的数组。
挑选出符合条件的项,并组成新的数组:

var arr = [1,5,9,7,40,25,16,30]
    var result = arr.filter(function(item,index,array){
    return item > 29;
})
console.log(result)

这里的条件时大于29,原数组里只有“40”和“30”大于29(满足所给定的条件),所以返回这两项内容组成的新数组:


image.png

4、.map()
对数组的每一项运行给定函数,返回每次函数调用的结果组成的数组。

var arr = [1,5,9,7,40,25,16,30]
    var result = arr.map(function(item,index,array){
    return item * 2;
})

这里给的条件是乘以二,将原数组中的每一项拿出来做乘以2的运算,并且返回运算后的新数组(不改变原数组)
console.log(result)


image.png

5、.forEach()
对数组的每一项运行给定函数。该方法没有返回值。

var arr = [1,5,9,7,40,25,16,30]
    var result = arr.forEach(function(item,index,array){
    return item * 2;
})
    console.log(result)

这里也是给原数组的每一项做*2的运算
和map一样,只不过map可以返回运算后的新数组,.forEach()没有返回值,如果一定要返回,则只有一个返回值:undefined:


image.png

虽然没有返回值,但是它可以打印和运算:

var arr = [1,5,9,7,40,25,16,30]
    var result = arr.forEach(function(item,index,array){
    console.log (item * 2);
})

这里原数组内的各项做了乘以2的运算并且能够打印,结果:

image.png

小编能力有限,存在不足或不全,请大家指出,共同学习与交流。

上一篇 下一篇

猜你喜欢

热点阅读