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

上海分院:顾配如

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

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

2.知识剖析

每个方法的作用

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

every(),对数组中每一项运行给定函数,如果该函数每一项都返回true,则返回true
filter(),对数组中每一项运行给定函数,返回该函数会返回true的项组成的数组
forEach(),对数组中每一项运行给定函数,没有返回值。
map(),对数组中每一项运行给定函数,返回每次函数调用的结果组成的数组
some(),对数组中每一项运行给定函数,如果函数对任意一项返回true,则返回true。
以上方法都不会修改数组中的包含项

3.常见问题

如何选择,有何应用

如果用for循环来选择符合条件的项并push到新数组相对麻烦,不够简单,看demo

迭代相比于for循环遍历,代码结构简单、规整

some()和every()可以用来进行数组项的判断。如果你要得到需要的项,可以用filter(),map()适合创建包含的项与另外一个数组一一对应的数组

5.编码实战

6.扩展思考

递归和迭代的区别是什么,各有什么优缺点?
程序调用自身称为递归,利用变量的原值推出新值称为迭代。
递归的优点大问题转化为小问题,可以减少代码量,同时代码精简,可读性好; 缺点就是递归调用浪费了空间,而且递归太深容易造成堆栈的溢出。
迭代的好处就是代码运行效率好,因为时间只因循环次数增加而增加,而且没有额外的空间开销; 缺点就是代码不如递归简洁

7.参考文献

8.更多讨论

鸣谢

感谢观看

BY——顾配如