学习JS数组的迭代应用。大家知道,在ECMAscript中定义了5种数组迭代的方法,分别是:every、filter、forEach、map、some。下面列举下用法:
every():对数组的每一项运行给定函数,如果该函数对每一项都返回true,则返回true,否则返回false
some():对数组的每一项运行给定函数,如果该函数对任一项返回true,则返回true
filter():对数组的每一项运行给定函数,返回该函数会返回true的项组成的数组
map():对数组的每一项运行给定函数,返回每次函数调用的结果组成的数组
forEach():对数组的每一项运行给定函数,这个方法没有返回值
区别:
以上五种迭代方法都是对数组进行一定的操作,已达到我们想要的结果;
every()和some()方法对数组进行迭代,最后返回的值是一个布尔值,换句话说这两种方法是对数组进行判断时使用的,我们并 不能直接使用返回的值。需要结其他方法是返回值发挥作用
filter()和map()方法最后返回的是符合我们要求的数组,可以直接进行使用。
forEach()方法不会返回任何值,只会执行某些操作。与for循环类似、
注意:
这几种迭代方法都不会改变原数组,只会返回相应的值或数组。
使用方法:
var number = [1,2,3,4,5,6,7,8,9];//先定义一个数组,方便掩饰 var ereryRes = number.every(function (p1) { return (p1>2); }) alert(ereryRes) //false var someRes = number.some(function (p1) { return (p1>2); }) alert(someRes) //ture var filterRes = number.filter(function (p1) { return (p1>2); }) alert(filterRes) //3,4,5,6,7,8,9 var mapRes = number.map(function (p1) { return p1*2 }) alert(mapRes) //2,4,6,8,10,12,14,16,18 var forEachRes = number.forEach(function (p1) { //执行某种操作 }) alert(forEachRes) //不会返回值,只会执行操作,与for循环类似
如何根据问题选择选择迭代方法
上面已经提到,当我们需要对数组进行判断以实现某种方法,可以选用every()和some()方法。
当我们需要对数组筛选和对其进行更改而产生新的数组时,可以使用filter()和map()方法。
当我们需要遍历数组可以使用forEach()方法。
网友评论文明上网理性发言 已有0人参与
发表评论: