每天一個lodash方法(6)

fromPairs

功能:將數組解析成對象。

@pairs: 需要解析的鍵值對數組
@result: 返回的對象
function fromPairs(pairs) {
      var index = -1,
          length = pairs == null ? 0 : pairs.length,
          result = {};
     // 遍歷數組,對象賦值
      while (++index < length) {
        var pair = pairs[index];
        result[pair[0]] = pair[1];
      }
      return result;
    }

indexOf

功能:從指定位置(fromIndex,默認為0)開始查詢數組array中第一個值為value的元素,返回該元素下標。

function indexOf(array, value, fromIndex) {
  const length = array == null ? 0 : array.length
  if (!length) {
    return -1
  }
  let index = fromIndex == null ? 0 : +fromIndex
  // 確定起始位置,并對位置進行判斷
  if (index < 0) {
    index = Math.max(length + index, 0)
  }
  // 核心查詢方法
  return baseIndexOf(array, value, index)
}

// baseIndexOf
function baseIndexOf(array, value, fromIndex) {
  // 根據類型的不同,執行不同的查找方法,但是核心查找方法都是遍歷比較
  return value === value
    ? strictIndexOf(array, value, fromIndex)
    : baseFindIndex(array, baseIsNaN, fromIndex)
}

// strictIndexOf
function strictIndexOf(array, value, fromIndex) {
  let index = fromIndex - 1
  const { length } = array

  while (++index < length) {
    if (array[index] === value) {
      return index
    }
  }
  return -1
}

// baseFindIndex類似,不同之處在于將判斷相等變成了謂詞判定

initial

功能:返回數組除最后一個之外的所有元素。
方法:slice切割。

 function initial(array) {
  const length = array == null ? 0 : array.length
  return length ? slice(array, 0, -1) : []
}
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容