用reduce 實現map方法

2021-02-19 進階全棧開發

reduce & map

reduce是一個累加方法,是對數組累積執行回調函數,返回最終計算的結果。

array.reduce(function (total, currentValue, currentIndex, arr) {},

initialValue);

1.total 必需:初始值,或者計算結束後返回的值

2.curentValue 必需:當前元素

3.currentIndex可選:當前元素的索引。

4.arr可選,當前元素的所屬的數組對象

5.initialvalue可選:傳給函數的初始值

map是遍歷數組的每一項,並執行回調函數的操作,返回一個對每一項進行操作後的新數組。

array.map(function (crrentValue, index, arr) {}, thisArg);

1.currentValue必需:當前元素只

2.index可選:當前元素索引值

3.arr可選:當前元素所屬數組對象

4.thisArg 可選:對象作為該執行回調時使用,傳遞給函數,用作 "this」的值。如果省略了thisArg,或者傳入null、undefined,那麼回調函數的this 為全局對象。

參考實現

Array.prototype.myMap = function (fn, thisArg = []) {

  if(typeof fn !== function){

      throw new Error(`${fn} is not a function`);

  }

  const res = [];

  this.reduce((pre, cur, index, arr) => {

    res.push(fn.call(thisArg, cur, index, arr));

  }, []);

  return res;

};

var arr = [2, 3, 1, 5];

arr.myMap(function (item, index, arr) {

  console.log(item, index, arr);

});

let res = arr.myMap((v) => v * 2);

console.log(res); // [4,6,2,10]

相關焦點

  • 圖解 Map、Reduce 和 Filter 數組方法
    我們直接進入正題,看看如何使用(並記住)這些超級好用的方法!Array.map()Array.map() 根據傳遞的轉換函數,更新給定數組中的每個值,並返回一個相同長度的新數組。它接受一個回調函數作為參數,用以執行轉換過程。let newArray = oldArray.map((value, index, array) => { ...
  • Python基礎應用:map與reduce
    map() 和 reduce() 都是Python內置的高階函數。所謂高階函數,即以函數作為輸入參數或輸出結果的函數,map() 和 reduce()的共同特徵是以函數作為傳入參數。以下是map()和reduce()的使用方法和例子:In [1]:# map() 最常見的用法是對列表做映射l = [ i for i in range(9)]print('l: ', l)print('\n')# 將匿名函數作為參數傳遞給map()函數# 匿名函數相關內容詳見
  • 在JavaScript函數式編程裡使用Map和Reduce方法
    在這些函數方法裡主要的是基於JavaScript 數組對象的map()方法和reduce()方法。如果你如今還沒有使用map()和reduce()方法,那麼現在是時候開始使用了。如今絕大部分的JavaScript開發平臺都與生俱來的支持ECMAScript5。使用Map方法和reduce方法可以使你的代碼更加簡潔和更容易閱讀和更容易維護,而且把你帶到朝向更簡潔的功能開發的路上。
  • 一文讀懂python的map、reduce函數
    map()方法會將 一個函數 映射到序列的每一個元素上,生成新序列,包含所有函數返回值。也就是說序列裡每一個元素都被當做x變量,放到一個函數f(x)裡,其結果是f(x1)、f(x2)、f(x3).組成的新序列。
  • 【第1589期】圖解 Map、Reduce 和 Filter 數組方法
    正文從這開始~~map、reduce 和 filter 是三個非常實用的 JavaScript 數組方法,賦予了開發者四兩撥千斤的能力。我們直接進入正題,看看如何使用(並記住)這些超級好用的方法!Array.map()Array.map() 根據傳遞的轉換函數,更新給定數組中的每個值,並返回一個相同長度的新數組。
  • 如何用Map、Filter和Reduce替換Python For循環?
    基於這種觀點,這三種方法是識別和實現,因為循環迭代的原因通常對應以下三種功能類型之一:· Map:對每個項應用相同的步驟集,儲存結果。· Filter: 應用驗證條件,儲存計算值為True的項。
  • 從打牌到map-reduce工作原理解析
    呂老師:過程看上去很簡單,但是要實現並不簡單,要考慮很多異常情況,幸好開源項目hadoop已經幫我們實現了這個模型,我們用它很簡單就能實現map-reduce。呂老師:申明不用看,主要看map方法,它有三個參數,key、value和context,邏輯也很簡單,其實就是用context.write往下遊寫了一個(card,1)的映射關係。
  • 漫畫:從打牌到 map-reduce 工作原理解析
    呂老師:過程看上去很簡單,但是要實現並不簡單,要考慮很多異常情況,幸好開源項目 Hadoop 已經幫我們實現了這個模型,我們用它很簡單就能實現 map-reduce。呂老師:申明不用看,主要看 map 方法,它有三個參數,key、value 和 context,邏輯也很簡單,其實就是用 context.write 往下遊寫了一個 (card,1) 的映射關係。
  • Python編程技巧:如何用Map, Filter, Reduce代替For循環?
    map、filter 和 reduce 這三種技術可以提供描述迭代原因的函數替代方案,以便避免過多的 for 循環。我之前在 JavaScript 中寫過這些技術的入門文章,但是它們在 Python 中的實現略有不同。
  • Python入門基礎之map()、reduce()函數使用
    (python2返回列表,Python3返回迭代對象)map()的使用方法形如map(f(x),Itera),它有兩個參數,第一個參數為某個函數,第二個為可迭代對象。基本用法:注意:python3中map()返回的是一個object,因為map()轉變成了迭代器來節約空間,返回的是可迭代對象。如果需要list可以直接用list(……)來強制返回一個列表。Map的主要作用就是:並行!並行!並行!
  • 詳解Python函數式編程之map、reduce、filter
    不過,在Python 3.x中,reduce()不是內置函數,而是放到了標準庫functools中,需要先導入再使用。(1)map()。內置函數map()可以將一個函數依次映射到序列或迭代器對象的每個元素上,並返回一個可迭代的map對象作為結果,map對象中每個元素是原序列中元素經過該函數處理後的結果,該函數不對原序列或迭代器對象做任何修改。
  • 5分鐘掌握Python | Map、Reduce和Filter如何運用?
    今天給大家介紹的是Python當中三個非常神奇的方法:map、reduce和filter。Map除了地圖之外,另一個英文本意是映射。在C++和Java一些語言當中,將map進一步引申成了存儲key和value映射結構的容器。
  • Python專題——五分鐘帶你了解map、reduce和filter
    今天是Python專題第6篇文章,給大家介紹的是Python當中三個非常神奇的方法:map、reduce和filter。不知道大家看到map和reduce的時候有沒有什麼感覺,如果看過之前我們大數據系列介紹MapReduce文章的同學,想必有些印象。這個MapReduce不是一個分布式的計算方法麼,怎麼又變成Python中的方法了?
  • JavaScript 關於map,reduce函數的一些思考
    map函數與reduce函數屬於函數式編程,通俗點說,可以把函數作為參數或返回值自由傳遞。
  • 從頭使用.map() .filter() 和.reduce(),你會有意想不到的收穫!
    真希望自己聽到的是實話:早點明白這三種方法其實都是識別和實現過程,循環遍歷迭代的原因通常屬於三個功能類別之一。回顧之前編寫的代碼,筆者發現95%的情況下,在對字符串或數組進行循環時,自己都會執行以下操作之一:將語句序列映射(map)到每個值,過濾(filter)滿足特定條件的值,或者將數據集減少(reduce)到單個聚合值。
  • python高階函數:map、filter、reduce的替代品
    在函數式編程中,大家最熟悉的高階函數主要有map函數、filter函數、reduce函數和apply函數。python3中移除了apply。如果想使用不定量的參數調用函數,可以使用fn(*args,**keywords),不用再使用apply(fn,args,keywords)。
  • python高階函數學習, map、reduce
    函數map():map()函數接收兩個參數,一個是函數,一個是Iterable, map把函數作用於序列的每一個元素,並把結果作為Iterator返回。注意,返回的是生成器Iterator,所以取返回值的時候需要用for,或者next,或者通過list序列化之後才能取出來舉例:def f(x): return x * x #定義一個函數f(x),返回值是兩個數的乘積r = map(f, [1, 2, 3, 4, 5, 6]) #通過map函數讓f(x)作用於後面序列的每一個元素
  • 「python」高階函數map、reduce的介紹
    Pythonmap先看官方介紹:map(function, iterable, ...)map函數至少使用2個參數:(函數,可迭代對象),返回的結果是個迭代器。實現的作用是將前面的函數依次在後面的可迭代對象上執行。>>> def ljds(x):... return x+x...
  • 案例詳解:filter 過濾、map 映射、reduce累積
    map()函數接收兩個參數,一個是函數,一個是Iterable(可迭代對象),map將傳入的函數依次作用到序列的每個元素,並把結果作為新的Iterator返回。map() 函數語法:    map(function, iterable, ...)
  • Python 進階之術 Map Filter Reduce
    這是它的規範:規範map(function_to_apply, list_of_inputs)⼤多數時候,我們要把列表中所有元素⼀個個地傳遞給⼀個函數,並收集輸出。⽐⽅說:items = [1, 2, 3, 4, 5]squared = []for i in items: squared.append(i**2)Map 可以讓我們⽤⼀種簡單⽽漂亮得多的⽅式來實現。