JavaScript中的數(shù)組(Arrary)和Python中的列表(List)
?在JS中的數(shù)組(Array)和Python中的列表(List)其實表現(xiàn)的是同一種數(shù)據(jù)結構,因為JavaScript和Python同為弱類型語言(或者說動態(tài)語言)禽绪,因此兩者之間在變量、數(shù)據(jù)類型以及方法上都有很多相似的地方(真的非常相似竭贩,專精于其中一種語言的朋友可以了解一下另一只語言)。本文就講一講Python中的高階函數(shù)(map筋岛,filter娶视,reduce)和JavaScript中對數(shù)組的迭代操作的一些異同(其實同更多一點)
高階函數(shù)
符合以下兩個條件之一的即是高階函數(shù):
- 接收一個函數(shù)作為參數(shù)
- 返回值為一個函數(shù)(的索引)
異同
在python中,高階函數(shù)是一個面向所有可迭代對象使用的函數(shù)睁宰,而并非某種數(shù)據(jù)類型自帶的方法肪获。而在JavaScript里,高階函數(shù)是作為方法封裝在數(shù)組的原型中的柒傻,需要有具體的數(shù)組實例來調用才能實現(xiàn)孝赫。在JS和python中都有map()這個函數(shù)(方法),但是JS中的調用是這樣的:
[1,2,3].map(function(){})
而python的使用是這樣的
map(function,[1,2,3])
all()和every()
這兩個函數(shù)的邏輯都是檢查數(shù)組中的每一個元素红符,但是兩者大有不同青柄。先看兩個函數(shù)的具體輸入輸出:
函數(shù)名 | 輸入參數(shù) | 輸出 | 備注 | 語言 |
---|---|---|---|---|
all() | iterable | True或False | 如果iterable的所有元素不為0、''预侯、False或者iterable為空致开,all()返回True,否則返回False萎馅; | Python |
every() | callback(element,index,array) ?element:用于測試的當前值 ?index:當前元素的索引 ?array:調用every的當前數(shù)組 |
true或false | 如果callback對每一項都返回 true双戳,則返回 true,反之亦然 | JavaScript |
顯然all()和every()最大的不同就是糜芳,在all()中飒货,對于數(shù)組每一個元素的判斷規(guī)則是固定的,即“的所有元素不為0峭竣、''塘辅、False或者iterable為空”,而every()則可以通過傳入回調函數(shù)來自行決定判斷規(guī)則皆撩。
any()和some()
和all()和every()的關系一樣
函數(shù)名 | 輸入參數(shù) | 輸出 | 備注 | 語言 |
---|---|---|---|---|
any() | iterable | True或False | 如果iterable中有任意一個元素不為0扣墩、''、False,any()返回True沮榜,否則返回False(包括iterable為空的情況); | Python |
some() | callback(element,index,array) ?element:用于測試的當前值 ?index:當前元素的索引 ?array:調用every的當前數(shù)組 |
true或false | 如果callback對任一項都返回 true盘榨,則返回 true。如果回調函數(shù)對所有項都返回false蟆融,則返回false | JavaScript |
未完待續(xù)。守呜。