国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

lodash里的reduce

loostudy / 2743人閱讀

摘要:前言對于,可能之前對于他的用法只是用于累加,但其實他的真正用途適用于作為一個高階函數,用于實現函數式編程里的的個人理解創建一個函數,最少接收兩個參數,一個函數數組,一個初始參數,依次執行函數數組,下一個函數的第一個參數是上一個的結果,初始參

前言

對于reduce,可能之前對于他的用法只是用于累加,但其實他的真正用途適用于作為一個高階函數,用于實現函數式編程里的 compose

compose的個人理解

創建一個函數,最少接收兩個參數,一個函數數組,一個初始參數,依次執行函數數組,下一個函數的第一個參數是上一個的結果,初始參數是第一個函數的第一個參數。

lodash實現 reduce

function reduce(collection, iteratee, accumulator) {
  const func = Array.isArray(collection) ? arrayReduce : baseReduce
  const initAccum = arguments.length < 3
  
  return func(collection, iteratee, accumulator, initAccum, baseEach)
}
arrayReduce
function arrayReduce(array, iteratee, accumulator, initAccum) {
  let index = -1
  const length = array == null ? 0 : array.length

  if (initAccum && length) {
    accumulator = array[++index]
  }
  //  當initAccum為true時,從下標為1的開始運行
  while (++index < length) {
    accumulator = iteratee(accumulator, array[index], index, array)
  }
  return accumulator
}
baseReduce

function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
  eachFunc(collection, (value, index, collection) => {
    accumulator = initAccum
      ? (initAccum = false, value)
      : iteratee(accumulator, value, index, collection)
  })
  return accumulator
}
baseEach

function baseEach(collection, iteratee) {
  if (collection == null) {
    return collection
  }
  
  if (!isArrayLike(collection)) {
    
    return baseForOwn(collection, iteratee)
  }
  const length = collection.length
  const iterable = Object(collection)
  let index = -1

  while (++index < length) {
    
    if (iteratee(iterable[index], index, iterable) === false) {
      break
    }
  }
  return collection
}

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/103389.html

相關文章

  • 史上最全的 Redux 源碼分析

    摘要:訂閱器不應該關注所有的變化,在訂閱器被調用之前,往往由于嵌套的導致發生多次的改變,我們應該保證所有的監聽都注冊在之前。 前言 用 React + Redux 已經一段時間了,記得剛開始用Redux 的時候感覺非常繞,總搞不起里面的關系,如果大家用一段時間Redux又看了它的源碼話,對你的理解會有很大的幫助。看完后,在回來看Redux,有一種 柳暗花明又一村 的感覺 ,. 源碼 我分析的...

    fai1017 評論0 收藏0
  • Lodash 源碼分析(二)“Function” Methods

    摘要:眾所周知,函數能夠將一個集合進行折疊。我們看到源代碼是這樣的在官方的注釋中說,對于對象,遍歷順序是無法保證的。我在閱讀源代碼的過程中也會遇到很多不理解的地方。待續下周將繼續更新源碼分析系列,接下來將會分析集合方法。 前言 這是Lodash源碼分析的第二篇文章,我們在第一篇Lodash 源碼分析(一)Function Methods中介紹了基本的_.after,_.map,以及復雜的_....

    cheukyin 評論0 收藏0
  • 你并不需要Underscore/Lodash

    摘要:將某個列表中的元素映射到新的列表中。判斷序列中是否存在元素滿足給定方程的條件。用來查找數組中某指定元素的索引如果找不到指定的元素則返回返回指定值在字符串對象中首次出現的位置。創建一個在經過了指定計數器之后才會被調用的方程。 You dont (may not) need Lodash/Underscore Lodash 和 Underscore 是非常優秀的當代JavaScript的工...

    Mr_houzi 評論0 收藏0
  • JavaScript 數組分組的實現

    摘要:今天回答了的問題生產嵌套數組也就是對數組分組更好的寫法。實現像這種,目標數組長度和原數組長度不一致的情況,函數式寫法很容易想到函數。小結數組分組是一個很簡單的問題,有很多種方法來處理。 今天回答了 @_bleach 的問題:JS生產嵌套數組(也就是對數組分組)更好的寫法。回答的過程中對 lodash _.chunk() 產生了好奇,所以分析了一下它的源碼,再加上我自己的解決方案,收集...

    Coly 評論0 收藏0
  • 【騰訊Bugly干貨分享】React 移動 web 極致優化

    摘要:數據管理及性能優化統一管理數據這一部份算是重頭戲吧。重復渲染導致卡頓這套的東西在家校群頁面上用得很歡樂,以至于不用怎么寫都沒遇到過什么性能問題。但放到移動端上,我們在列表頁重構的時候就馬上遇到卡頓的問題了。列表頁目前的處理辦法是將值換成。 本文來自于騰訊bugly開發者社區,非經作者同意,請勿轉載,原文地址:http://dev.qq.com/topic/57908... 最近一個季度...

    suosuopuo 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<