chunk源碼解析(見注釋)

在項(xiàng)目中使用通常會(huì)遇到一個(gè)數(shù)組需要分多行顯示,類似于瀑布流的方式,在這種場景下我們需要對一維數(shù)組進(jìn)行轉(zhuǎn)換為二維數(shù)組。我們可以使用lodash的chunk方法進(jìn)行轉(zhuǎn)換。

  • 基本用法
_.chunk(array, [size=1])
  • 解析
    一起來看一下lodash如何實(shí)現(xiàn)的chunk方法。
    • 首先是引入三個(gè)函數(shù)和定義了兩個(gè)方法
    // 截取數(shù)組的起始部分和結(jié)束部分之間的數(shù)組并返回
    var baseSlice = require('./_baseSlice'),
      // 
      isIterateeCall = require('./_isIterateeCall'),
      toInteger = require('./toInteger');
    // 聲明獲取最大值和最小值的方法
    var nativeCeil = Math.ceil,
      nativeMax = Math.max;
    
    • 然后就是主要方法
    function chunk(array, size, guard) {
      if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {
        size = 1;
      } else {
        size = nativeMax(toInteger(size), 0);
      }
      // 非空判斷
      var length = array == null ? 0 : array.length;
      if (!length || size < 1) {
        return [];
      }
      var index = 0,
        resIndex = 0,
        // 生成外圍數(shù)組
        result = Array(nativeCeil(length / size));
      // 遍歷生成數(shù)組的每一項(xiàng)
      while (index < length) {
        result[resIndex++] = baseSlice(array, index, (index += size));
      }
      return result;
    }
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容