发表于: 2017-05-06 00:51:56

1 939


小课堂: 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#/



返回列表 返回列表
评论

    分享到