js 迭代器方法

来源:互联网 发布:基地阅读顺序知乎 编辑:程序博客网 时间:2024/06/18 18:06

 js 数组的迭代器方法,分为两种:一种不生成新数组,一种产生新数组。

第一种方法:不产生任何新数组,相反,他们要么对于数组中的每个元素进行某种操作,要么返回一个值。

1. forEach()方法,该方法接收一个函数作为参数,对数组中的每个元素使用该函数。

<script> function arr(num){console.log(num+1)}; var array = [1,2,3,4,5,6]; array.forEach(arr);</script>

2.every()和some(),这两个方法都是接受一个返回值为布尔类型的函数,对数组中的每一个元素使用该函数。every()方法是对于所有元素,该函数都返回true,该方法就返回true。而some()方法时只要有一个元素使用该函数返回true,该方法就返回true。

<script> var  arr = [1,3,4,5,6,7,8];function even(num){return num%2 ==0};var sum = arr.every(even);var  nums = arr.some(even);console.log(sum)//false;console.log(nums)//true;
</script>
3.reduce()方法接受一个函数,返回一个值。该方法会从一个累加值开始,不断对累加值和数组中的后续元素调用该函数,直到数组中的最后一个元素,最后返回得到的累加值。还可以把字符串数组元素连接成一个长字符串

function add(total,num){return total+-*/num};var arr =[1,2,3,4];var sum = arr.reduce(add);
js还提供了reduceRight()方法,不同的是他和reduce()方法顺序刚好相反,从右往左。
第二种方法 生成新数组的迭代器方法 

有两个迭代器方法可以产生新数组:map()和filter()。map()和forEach()有点像,对数组中的每个元素使用某个函数,两者区别在于map()返回一个新数组,该数组是对原有元素应用某个函数得到的结果。

   function add(num) {        return num+=5;    }    var words =[1,2,3,4,5];    var sum =words.map(add);console.log(sum);//[6,7,8,9,10]
 filter() 和every()类似,传入一个返回值为布尔类型的函数,和every()不同的是,当对数组中的所有元素应用该函数,结果均为true时,该方法并不返回true,而是返回一个新数组,该数组包含应用该函数后结果为true的元素。

    function add(num) {        return num%2 == 0;    }    var words =[1,2,3,4,5];    var sum =words.filter(add);console.log(sum);//[2,4];
filter()还可以用于过滤字符串数组。例如:

function add(str){if(str).indexOf("cie")>-1){return true;}return false;}var words =["recieve","deceit","deceive"]var miss = words.filter(add);console.log(miss)//["recieve"]






原创粉丝点击