天天看点

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用法类似