Rumah >hujung hadapan web >tutorial js >关于js 迭代器方法
迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址。 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];
<br/>
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"]
以上内容就是关于js 迭代器方法,希望能帮助到大家。
相关推荐:
Atas ialah kandungan terperinci 关于js 迭代器方法. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!