对一个数组 filter、some、map、foreach的操作分别有什么作用

本文详细介绍了JavaScript数组中的四种迭代方法:filter()、some()、map() 和 forEach()。这些方法不仅简化了代码,还能高效地处理数组数据。通过具体实例展示了每种方法的应用场景及其实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.背景介绍

在js语言中,数组对象(即Array类型)是一种非常常用的类型,ECMAScript数组的每一项可以保存任何类型的数据。

数组对象的方法有很多:“转换方法”、“栈方法”、“队列方法”、“重排序方法”、“操作方法”、“迭代方法”等。

这次就针对“迭代方法”的内容进行介绍。

2.知识剖析

迭代方法

filter()、some()、map()、forEach()

每个方法都接收两个参数:

1、要在每一项上运行的函数。

2、运行该函数的作用域对象—this(可选)。

    array.filter(function () {

        //do your staff here;

    }, this);

传入这些方法中的函数参数本身会接收三个参数:

1、数组项的值;

2、该项在数组中的位置;

3、数组对象本身;

    array.forEach(function (item, index, array) {

        //do your staff here;

    }, this);

对一个数组 filter、some、map、foreach的操作分别有什么作用

filter():对数组中的每一项运行给定函数,返回该函数会返回true 的项组成的数组。

some():对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true。

map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。

forEach():对数组中的每一项运行给定函数。这个方法没有返回值。    

例子 一         

  var arr = [1,2,3,4,5];

        console.log(arr.filter(function (item,index,array) {

            console.log('item='+item+',index='+index+',array='+array);

            return item>2;

        }));

filter() 把原数组arr每一项返回为true的项,重新组成数组,并打印出该数组每个索引的值和数组长度。   

例子二    

  var arr = [1,2,3,4,5];

                console.log(arr.some(function (item,index,array) {

                console.log('item='+item+',index='+index+',array='+array);

                return item>2;

                }));

some() ,在遍历数组项的时候,当第一个满足函数体的项出现,就直接返回true,并且不再执行后面的迭代。  

例子三                  

  var arr = [1,2,3,4,5];

            console.log(arr.map(function (item,index,array) {

            console.log('item='+item+',index='+index+',array='+array);

            return item>2;

        }));

map() 把原数组arr的每一项迭代返回的结果,重新组成数组,并打印出该数组每个索引的值和数组长度。

例子四

   var arr = [1,2,3,4,5];

     console.log(arr.forEach(function (item,index,array) {

      console.log('item='+item+',index='+index+',array='+array);

              return item>2;

     }));

forEach():对数组中的每一项运行给定函数,这个方法并没有返回值。 forEach() ,只是对每个数组项运行指定的函数体,这个迭代方式并没有返回值。

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

Js 数组——filter()、map()、some()、every()、forEach()、lastIndexOf()、indexOf()

js数组操作--使用迭代方法替代for循环

8.更多讨论



问题一  相对于for(),JS数组自定义的数组迭代方式有哪些好处?

答:在实现相同功能的前提下,后者除了能够节省代码量外,在实现某些功能上的流程中存在很多有意思的优势,比如forEach相比普通的for循环的优势在于对稀疏数组的处理,会跳过数组中的空位。for+i在性能测试上是优越于后者,但是前提是,array的length要事先计算出来,而在处理非常大量的数据时候,后者的优势就显而易见了。


问题二  参数item、index和array代表的是什么?

答:传入这些方法中的函数会接收三个参数,item表示遍历后的当前对象,里面的index代表当前循环到第几个索引,array代表数组对象本身。


问题三  迭代和遍历、循环、递归有什么区别?

答:循环(loop),指的是在满足条件的情况下,重复执行同一段代码。比如,while语句。

迭代(iterate),指的是按照某种顺序逐个访问列表中的每一项。比如,for语句。

遍历(traversal),指的是按照一定的规则访问树形结构中的每个节点,而且每个节点都只访问一次。

递归(recursion),指的是一个函数不断调用自身的行为。比如,以编程方式输出著名的斐波纳契数列。

有了以上定义,这几个概念之间的区别其实就比较清楚了。至于它们之间的联系,严格来讲,它们似乎都属于算法的范畴。

换句话说,它们只不过是解决问题的不同手段和方式,而本质上则都是计算机编程中达成特定目标的途径。



PPT

video


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值