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

2020-06-06  本文已影响0人  大黄_5485

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

未完待续。。

上一篇 下一篇

猜你喜欢

热点阅读