对一个数组 FILTER、SOME、MAP、FOREACH的操作分别有什么作用?

这里是修真院前端小课堂,每篇分享文从

八个方面深度解析前端知识/技能,本篇分享的是:

【对一个数组 FILTER、SOME、MAP、FOREACH的操作分别有什么作用?】

【修真院web小课堂】

大家好,我是IT修真院上海分院第8期的学员周能,一枚正直纯洁善良的web程序员,今天给大家分享一下,修真院官网web任务4,深度思考中的知识点——对一个数组 FILTER、SOME、MAP、FOREACH的操作分别有什么作用?

(1)背景介绍:

什么是数组

数组就是一组数据的集合

其表现形式就是内存中的一段连续的内存地址

数组名称其实就是连续内存地址的首地址

数组定义时无需指定数据类型、数组长度、数组可以存储任何数据类型的数据

(2)知识剖析:

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

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

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

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

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

forEach()对数组中每一项运行给定函数,没有返回值。

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

以上方法都不会修改数组中的包含项

(3)常见问题:

如何选择以上方法,有何应用

(4)解决方案:

如果用for循环来选择符合条件的项并push到新数组相对麻烦,不够简单 迭代相比于for循环遍历,代码结构简单、规整 some()和every()可以用来进行数组项的判断。如果你要得到需要的项,可以用filter(),map()适合创建包含的项与另外一个数组一一对应的数组

(5)编码实战:

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

console.log(arr)

// filter

var x = arr.filter(function (item, index, arr) {

return (item > 2)

})

console.log(x)

//some

var x = arr.some(function (item, index, arr) {

return (item > 2)

})

console.log(x)

// map

var x = arr.map(function (item, index, arr) {

return (item > 2)

})

console.log(x)

// forEach

var x = arr.forEach(function (item, index, arr) {

console.log(item > 2)

})

console.log(x)

// every

var x = arr.every(function (item, index, arr) {

return (item > 2)

})

console.log(x)

(6)拓展思考:

递归和迭代的区别是什么,各有什么优缺点?

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

递归指的是一个函数不断调用自身的行为。

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

(7)参考文献:

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

递归和迭代

(8)更多讨论:

1、every和some区别

答:every每一项返回true才返回true,some是有一项返回true则返回true

2、参数item、index和arr代表的是什么?

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

3、递归和迭代的区别是什么,各有什么优缺点?

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

 递归指的是一个函数不断调用自身的行为。

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

(9)鸣谢:

感谢观看

(10)结束语:

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值