JavaScript實用庫:Lodash源碼數組函數解析(十一)without以及很多我沒詳戲記細過的

本章的內容主要是:without以及很多我沒詳細記錄過的


在這裏插入圖片描述

Lodash是一個非常好用方便的JavaScript的工具庫,使得我們對數據處理能夠更加得心應手

接下來我要對Lodash的源碼進行剖析學習
每天幾個小方法,跟着我一起來學lodash吧


1、_.without(array, [values])

官方解釋:
創建一個剔除所有給定值的新數組,剔除值的時候,使用SameValueZero做相等比較。

注意: 不像 _.pull, 這個方法會返回一個新數組。

我們來看例子:
在這裏插入圖片描述

很明顯就是去除了數組中的1,2 留下了3這個元素

接下來看源碼:

var without = baseRest(function(array, values) {
  //isArrayLikeObject用於判斷array是不是數組
  //baseDifference用於去除元素
  return isArrayLikeObject(array)
    ? baseDifference(array, values)
    : [];
});

module.exports = without;

具體的difference的源碼解釋可以看我的文章:
JavaScript實用庫:Lodash源碼數組函數解析(二) difference、baseDifference、isArrayLikeObject、isArrayLike、baseRest

今天就到這裏吧

爲什麼今天就到這裏了?

相信有人發現了,有些數組的函數我沒有提到,因爲有些函數真的轉的我頭暈了,本人能力有限,所以不能全部解釋了,但是我還是將我沒提到的方法以及功能寫在下面吧:


1、_.intersection([arrays])

創建唯一值的數組,這個數組包含所有給定數組都包含的元素,使用 SameValueZero進行相等性比較。(注:可以理解爲給定數組的交集)
在這裏插入圖片描述


2、 .intersectionBy([arrays], [iteratee=.identity])

這個方法類似 _.intersection,區別是它接受一個 iteratee 調用每一個arrays的每個值以產生一個值,通過產生的值進行了比較。結果值是從第一數組中選擇。iteratee 會傳入一個參數:(value)。

在這裏插入圖片描述


3、_.intersectionWith([arrays], [comparator])

這個方法類似 _.intersection,區別是它接受一個 comparator 調用比較arrays中的元素。結果值是從第一數組中選擇。comparator 會傳入兩個參數:(arrVal, othVal)。

在這裏插入圖片描述


4、_.pull(array, [values])

移除數組array中所有和給定值相等的元素,使用 SameValueZero 進行全等比較。

注意: 和 _.without 方法不同,這個方法會改變數組。使用 _.remove 從一個數組中移除元素。

在這裏插入圖片描述


5、_.pullAll(array, values)

這個方法類似_.pull,區別是這個方法接收一個要移除值的數組。

Note: 不同於 _.difference, 這個方法會改變數組 array。

在這裏插入圖片描述


6、.pullAllBy(array, values, [iteratee=.identity])

這個方法類似於_.pullAll ,區別是這個方法接受一個 iteratee(迭代函數) 調用 array 和 values的每個值以產生一個值,通過產生的值進行了比較。iteratee 會傳入一個參數: (value)。

Note: 不同於 _.differenceBy, 這個方法會改變數組 array。

在這裏插入圖片描述


7、_.pullAllWith(array, values, [comparator])

這個方法類似於 _.pullAll,區別是這個方法接受 comparator 調用array中的元素和values比較。comparator 會傳入兩個參數:(arrVal, othVal)。

注意: 和 _.differenceWith 不同, 這個方法會改變數組 array。

在這裏插入圖片描述


8、_.pullAt(array, [indexes])

根據索引 indexes,移除array中對應的元素,並返回被移除元素的數組。

Note: 和 _.at不同, 這個方法會改變數組 array。

在這裏插入圖片描述


9、_.sortedIndex(array, value)

使用二進制的方式檢索來決定 value值 應該插入到數組中 儘可能小的索引位置,以保證array的排序。

在這裏插入圖片描述


10、.sortedIndexBy(array, value, [iteratee=.identity])

這個方法類似 _.sortedIndex ,除了它接受一個 iteratee (迭代函數),調用每一個數組(array)元素,返回結果和value 值比較來計算排序。iteratee 會傳入一個參數:(value)。

在這裏插入圖片描述


11、_.sortedIndexOf(array, value)

這個方法類似 _.indexOf,除了它是在已經排序的數組array上執行二進制檢索。

在這裏插入圖片描述


12、_.sortedLastIndex(array, value)

此方法類似於_.sortedIndex,除了 它返回 value值 在 array 中儘可能大的索引位置(index)。

在這裏插入圖片描述


13、.sortedLastIndexBy(array, value, [iteratee=.identity])

這個方法類似 _.sortedLastIndex ,除了它接受一個 iteratee (迭代函數),調用每一個數組(array)元素,返回結果和value 值比較來計算排序。iteratee 會傳入一個參數:(value)。

在這裏插入圖片描述


14、_.sortedLastIndexOf(array, value)

這個方法類似 _.lastIndexOf,除了它是在已經排序的數組array上執行二進制檢索

在這裏插入圖片描述


15、_.sortedUniq(array)

這個方法類似 _.uniq,除了它會優化排序數組

在這裏插入圖片描述


16、_.sortedUniqBy(array, [iteratee])

這個方法類似 _.uniqBy,除了它會優化排序數組。

在這裏插入圖片描述


17、_.union([arrays])

創建一個按順序排列的唯一值的數組。所有給定數組的元素值使用SameValueZero做等值比較。(注: arrays(數組)的並集,按順序返回,返回數組的元素是唯一的)

在這裏插入圖片描述


18、_.xor([arrays])

創建一個給定數組唯一值的數組,使用symmetric difference做等值比較。返回值的順序取決於他們數組的出現順序。

在這裏插入圖片描述


還有一點沒有提到,大家可以去lodash中文文檔去學習,我這裏並不全面,也不是很細緻,我只是發表一下自己的看法,同時也是希望能夠幫助到其他的人

數組的源碼解析就告一段落了,下次就開啓下一個數據類型的處理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章