IT修真院·小课堂丨互联网职业小课堂在线学习平台

课堂课题:

对一个数组 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)结束语:

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

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

辅导师兄 [真传弟子]JAVA-李绍博


(1)背景介绍:

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

(2)知识剖析:



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



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



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


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


 函数不断在调用自己,直到找到终点,把结果沿着原来的路线进行传递,最终回归到起点


 数组,在编程语言中很重要,其中every()、filter()、some()、map()、forEach()是ECMAScript5为数组定义的5个迭代方法, 是为了更方便的对数组进行操作。


   every()、filter()、some()、map()、forEach()是ECMAScript5为数组定义的5个迭代方法, 是为了更方便的对数组进行操作。
   
     every():对数组中的每一项运行给定函数,如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测
    
     filter():对数组中的每一项运行给定函数,返回该函数会返回true 的项组成的数组。
    
    筛选出数组中符合的项,组成新的数组
    

    forEach():对数组中的每一项运行给定函数。这个方法没有返回值。调用数组的每个元素,并将元素传递给回调函数,让数组的每一项做一件事
    
    map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
    
    map()让数组通过某种计算得到一个新的数组,不改变原来数组的值
    
     some():对数组中的每一项运行给定函数, some()检测数组中的某些项符合条件,如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测
    

(3)常见问题:


什么是迭代、遍历、循环、递归?



(4)解决方案:


    循环(loop):指的是在满足条件的情况下,重复执行同一段代码。一般语言都会有三种类型的循环语句:for语句、while语句和do While语句。

       可以理解为:循环就是迭代(重复)一些命令的代码块, 如果循环控制条件不满足的话, 就结束循环.

       例子:将一段音乐或声音反覆播放数次(无限次/无穷循环)
    

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

       可以理解为:遍历一个集合,把集合里的每个元素都遍历一边。有时候,迭代也会指循环执行,反复执行的意思。


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

       可以理解为:遍历,是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。或者理解为按一定的次序系统地访问结构中的所有结点,使每个结点只被访问一次。



       递归(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() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。



       reduce() 可以作为一个高阶函数,用于函数的 compose。



       注意: reduce() 对于空数组是不会执行回调函数的。
   

       function(total,currentValue, index,arr)


       total  必需。初始值, 或者计算结束后的返回值。
  
       currentValue   必需。当前元素


       currentIndex  可选。当前元素的索引
  
 

       arr    可选。当前元素所属的数组对象。


(7)参考文献:


   参考一:https://blog.csdn.net/wustzbq0713/article/details/46387309



   参考二:https://juejin.im/post/6844903743444484104

(8)更多讨论:

     
 Q1:其他遍历数组的方法有哪些
      
 有for,以及for...in,for...of等


Q2:迭代操作原来的数组是否会发生变化


原数组不会发生变化,而是会生成一个新的数组,新的数组有执行函数后的结果


(9)结束语:

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


评论

请您登录 后进行评论