课堂课题:
对一个数组 filter、some、map、foreach的操作分别有什么作用?
关联任务:
任务二
直播时间:
2020-08-08 17:00:00
课堂内容:
视频链接:
PPT链接:
提交按钮:
小课堂内容格式
标题:
【修真院xx(职业)小课堂】课题名称
开场语:
大家好,我是IT修真院XX分院第X期的学员XX,一枚正直纯洁善良的XX程序员,今天给大家分享一下,修真院官网XX(职业)任务X,深度思考中的知识点——XXX
(1)背景介绍:
背景介绍的时候,尽可能的要宽广,讲清楚来龙去脉,讲清楚为什么会需要这个技术。
(2)知识剖析:
讲知识点的时候,尽可能的成体系,学会成体系的去给别人介绍知识。现在很多做的都是零散的,没有分类。
(3)常见问题:
最少列出1个常见问题。
(4)解决方案:
写清楚常见问题的解决方案。
(5)编码实战:
尽可能的去寻找在真实项目中在用的。如果你能找到某个网站在用你说的知识点,这是最好的。学以致用,否则当成练习题就没有意义了。多准备一些demo,讲解过程中将知识点和demo结合,便于大家理解所讲解的知识点。
(6)拓展思考:
知识点之外的拓展思考,由分享人进行讲解,这些东西就是所谓的深度,也是一个人技术水准高低比较的表现。
(7)参考文献:
引入参加文献的时候,在引用的句子后面加上序号【1】。参考文献中列出详细来源。不要去抄别人的东西,这是一个基本的态度。
(8)更多讨论:
Q1:提问人:问题?
A1:回答人(可以是分享人,也可以是其他学员):回答
Q2:提问人:问题?
A2:回答人(可以是分享人,也可以是其他学员):回答
Q3:提问人:问题?
A3:回答人(可以是分享人,也可以是其他学员):回答
(9)鸣谢:
感谢XX、XX师兄,此教程是在他们之前技术分享的基础上完善而成。
(10)结束语:
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
(1)背景介绍:
对一个数组 filter、some、map、foreach的操作分别有什么作用?(2)知识剖析:
循环(loop),指的是在满足条件的情况下,重复执行同一段代码。比如,while语句。
迭代(iterate),指的是按照某种顺序逐个访问列表中的每一项。比如,for语句。
遍历(traversal),指的是按照一定的规则访问树形结构中的每个节点,而且每个节点都只访问一次。
函数不断在调用自己,直到找到终点,把结果沿着原来的路线进行传递,最终回归到起点
数组,在编程语言中很重要,其中every()、filter()、some()、map()、forEach()是ECMAScript5为数组定义的5个迭代方法, 是为了更方便的对数组进行操作。
every():对数组中的每一项运行给定函数,如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测
filter():对数组中的每一项运行给定函数,返回该函数会返回true 的项组成的数组。
筛选出数组中符合的项,组成新的数组
forEach():对数组中的每一项运行给定函数。这个方法没有返回值。调用数组的每个元素,并将元素传递给回调函数,让数组的每一项做一件事
map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
map()让数组通过某种计算得到一个新的数组,不改变原来数组的值
some():对数组中的每一项运行给定函数, some()检测数组中的某些项符合条件,如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测
(3)常见问题:
(4)解决方案:
可以理解为:循环就是迭代(重复)一些命令的代码块, 如果循环控制条件不满足的话, 就结束循环.
例子:将一段音乐或声音反覆播放数次(无限次/无穷循环)
迭代(iterate),指的是按照某种顺序逐个访问列表中的每一项
可以理解为:遍历一个集合,把集合里的每个元素都遍历一边。有时候,迭代也会指循环执行,反复执行的意思。
可以理解为:遍历,是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。或者理解为按一定的次序系统地访问结构中的所有结点,使每个结点只被访问一次。
递归(recursion)在数学与计算机科学中,是指在函数的定义中使用函数自身的方法。递归一词还较常用于描述以自相似方法重复事物的过程。例如,当两面镜子相互之间近似平行时,镜中嵌套的图像是以无限递归的形式出现的。
可以理解为:指的是一个函数不断调用自身的行为。
(5)编码实战:
var arr = [1, 2, 3, 4, 5]; //every()检测数组中的每一项是否符合条件,如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测 var result = arr.every(function (item, index) { return item > 0 }) console.log(arr); console.log(result); //some()检测数组中的某些项符合条件,如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测 var result = arr.some(function (item, index) { return item > 1; }) console.log(arr); console.log(result); //filter()筛选出数组中符合的项,组成新的数组 var newArr = arr.filter(function (item, index) { return item > 3 }) console.log(arr); console.log(newArr); // forEach()让数组的每一项做一件事,forEach不支持return arr.forEach(function (item, index) { console.log(item); }) //map()让数组通过某种计算得到一个新的数组 // var newArr = arr.map(function (item, index) { return item * 2 }) console.log(arr); console.log(newArr); /*分裂*/ function total(n) { var yellow = function (n) { if (n === 0 || n === 1) { return 0 } return green(n - 1) } var green = function (n) { if (n === 0) { return 0 } return white(n - 1) } var white = function (n) { if (n === 0) { return 1 } return yellow(n - 1) + green(n - 1) + white(n - 1) } return yellow(n) + green(n) + white(n) } console.log(total(0));//1 console.log(total(1));//2 console.log(total(2));//4 console.log(total(3));//7 console.log(total(4));//13
(6)拓展思考:
其他操作数组的方法
reduce() 可以作为一个高阶函数,用于函数的 compose。
注意: reduce() 对于空数组是不会执行回调函数的。
function(total,currentValue, index,arr)
currentValue 必需。当前元素
arr 可选。当前元素所属的数组对象。
(7)参考文献:
参考二:https://juejin.im/post/6844903743444484104
(8)更多讨论:
Q1:其他遍历数组的方法有哪些
有for,以及for...in,for...of等
Q2:迭代操作原来的数组是否会发生变化?
原数组不会发生变化,而是会生成一个新的数组,新的数组有执行函数后的结果
(9)结束语:
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~