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

1. 背景介绍

使用JavaScript数组常常需要对数组进行遍历、迭代操作。而我们常用的就是for语句对数组进行迭代。在ES5已经为数组定义了5个迭代的方法,分别是:filter、some、map、foreach、every。

2. 知识剖析

五个迭代方法,每个方法都接收两个参数:要在每一项上运行的函数和运行该函数的作用域对象(可选的)。传入这些方法中的函数会接收三个参数:数组的项的值、该项在数组中的位置和数组对象本身。

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


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


3.  forEach() 是多数组中的每一项运行给定函数,这个方法没有返回值。它只是对数组中的每一项运行传入的函数,没有返回值。本质上与使用for循环迭代数组一样。


4.  every()是对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true。

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


3. 常见问题

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

4解决方案

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

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

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

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

5编码实战

6.扩展思考

ES5中两种归并方法

reduce()可以实现一个累加器的功能,将数组的每个值(从左到右)将其降低到一个值。

reduceRight()与reduce()功能一样,reduce是从数组的逐个遍历 到最后。而reduceRight()则从数组的最后一项开始,向前遍历到第一项。

  

 7.参考文献

js数组的迭代和归并方法

循环、迭代、遍历和递归之间的区别

8.更多讨论

讨论1:进行迭代操作原来的数组会发生变化么?

原来的数组不会发生变化,会生成一个新的数组存储函数运行之后的结果。

讨论2:foreach()和for循环之间的区别?

foreach是for循环的简化版本,foreach适用于循环次数未知,或者计算循环次数比较麻烦情况下使用效率更高,但是更为复杂的一些循环还是需要用到for循环效率更高。

讨论3:如何利用filter()实现去除数组中重复元素的功能?


PPT

腾讯视频


欢迎加入IT修真院
IT修真院是一个免费的线上IT技术学习平台。
每个职业以15个左右的task为初学者提供更快速高效的学习方式;
所有task均是从真实项目中提炼出来的技能点
强调实战演练+自学优先+师兄辅导的学习方式
严格的日报体系,欢乐的交流讨论学习气氛,更有无数师兄师姐帮你解疑答惑。
亲,准备好加入我们这个变态成长的修真宝地了吗?
点击官网,开始自己的修真之旅吧!
入群请修改群名片,格式如下:
地区-职业-编号
职业为在修真院所学的职业
编号为入群时的群人数




猜你喜欢

转载自blog.csdn.net/cjwjyooo/article/details/80222601