天天看點

lodash-difference了解difference了解

difference了解

  1. difference(array,[values])

    将array中的元素與values進行對比,移除在values中出現的所有值,并傳回這個新的數組

_.difference([3, 2, 1], [4, 2]);
// => [3, 1]
           
  1. differenceBy(array,[values],[iteratee=_.identity])

    将array 與values中的每個元素都通過iteratee處理,再進行比對,傳回一個新的數組

    例子如下:

_.differenceBy([3.1,2.2,1.3],[4.4,2.5],Math.floor)
//array與values中的每個元素都被Math.floor處理得到
//[3,2,1] ,[4,2] => 比對結果為[3,1]
// 但是傳回的是原先的值,是以結果為[3.1,1.3]
           
  1. differenceWith(array,[values],[comparator])

    以第一個數組的每一項與values的每一項進行比對,比對結果為true時,才會将array中的資料給删除,否則會一直疊代比對下去直到到達array長度極限

與differenceBy不同的是,comparator必須是個函數,寫法為

(a,b)=>{ //return false}

,其中a,b分别是取自array 與values的。其目的是為例自定義比對過濾方式,滿足什麼樣的條件可以删除更加随心所欲

例子:

_.differenceWith([3,2,3,2],[-3,-2],(a,b)=>{
	console.log(a,b)
	return true
})
//結果為 []
//列印資料如下:
// 3 -3
// 2 -3
// 3 -3
// 2 -3
           

如果比對結果始終不為true,則理論上比對的次數為

let timer = array.length * values.length

總結:lodash中difference的功能強弱(主要展現在自定義方面):

difference < differenceBy < differenceWith

同理intersection , intersectionBy , intersectionWith用法類似