美文网首页
JavaScript对数组的高阶函数&Python高阶函数的异同

JavaScript对数组的高阶函数&Python高阶函数的异同

作者: 大黄_5485 | 来源:发表于2020-06-06 15:22 被阅读0次

    JavaScript中的数组(Arrary)和Python中的列表(List)

     在JS中的数组(Array)和Python中的列表(List)其实表现的是同一种数据结构,因为JavaScript和Python同为弱类型语言(或者说动态语言),因此两者之间在变量、数据类型以及方法上都有很多相似的地方(真的非常相似,专精于其中一种语言的朋友可以了解一下另一只语言)。本文就讲一讲Python中的高阶函数(map,filter,reduce)和JavaScript中对数组的迭代操作的一些异同(其实同更多一点)

    高阶函数

    符合以下两个条件之一的即是高阶函数:

    1. 接收一个函数作为参数
    2. 返回值为一个函数(的索引)

    异同

    在python中,高阶函数是一个面向所有可迭代对象使用的函数,而并非某种数据类型自带的方法。而在JavaScript里,高阶函数是作为方法封装在数组的原型中的,需要有具体的数组实例来调用才能实现。在JS和python中都有map()这个函数(方法),但是JS中的调用是这样的:

    [1,2,3].map(function(){})
    

    而python的使用是这样的

    map(function,[1,2,3])
    

    all()和every()

    这两个函数的逻辑都是检查数组中的每一个元素,但是两者大有不同。先看两个函数的具体输入输出:

    函数名 输入参数 输出 备注 语言
    all() iterable True或False 如果iterable的所有元素不为0、''、False或者iterable为空,all()返回True,否则返回False; Python
    every() callback(element,index,array)
     element:用于测试的当前值
     index:当前元素的索引
     array:调用every的当前数组
    true或false 如果callback对每一项都返回 true,则返回 true,反之亦然 JavaScript

    显然all()和every()最大的不同就是,在all()中,对于数组每一个元素的判断规则是固定的,即“的所有元素不为0、''、False或者iterable为空”,而every()则可以通过传入回调函数来自行决定判断规则。

    any()和some()

    和all()和every()的关系一样

    函数名 输入参数 输出 备注 语言
    any() iterable True或False 如果iterable中有任意一个元素不为0、''、False,any()返回True,否则返回False(包括iterable为空的情况); Python
    some() callback(element,index,array)
     element:用于测试的当前值
     index:当前元素的索引
     array:调用every的当前数组
    true或false 如果callback对任一项都返回 true,则返回 true。如果回调函数对所有项都返回false,则返回false JavaScript

    未完待续。。

    相关文章

      网友评论

          本文标题:JavaScript对数组的高阶函数&Python高阶函数的异同

          本文链接:https://www.haomeiwen.com/subject/fttazhtx.html