发表于: 2017-05-06 00:51:56
1 940
小课堂: 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()方法
六、参考资料
《JS高级程序设计》
视频地址:https://v.qq.com/x/page/w05006koxxn.html
PPT地址: https://ptteng.github.io/PPT/PPT/js-4-shuzu%20diedai.html#/
评论