_.differenceBy(array, [values], [iteratee=_.identity])
与_.difference相比,它多接收一个iteratee参数。暂且称之为迭代器。array和values的元素值都需要先进行iteratee的参数的方法进行处理后再进行比较。结果值由第一个数组决定。
注意: 不同于 _.pullAllBy, _.differenceBy这个方法返回一个新数组。
_.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);
// => [1.2]
// The `_.property` iteratee shorthand.
_.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');
// => [{ 'x': 2 }]
解析1:Math.floor()返回小于或等于一个给定数字的最大整数。
思路过程一:迭代(Math.floor)元素后结果:[2.1, 1.2]=> [2, 1],[2.3, 3.4]=> [2, 3])
思路过程二:进行_.difference([2, 1], [2, 3]) 过滤值。 =》 剩下1
思路过程三:将1.2push到一个新的数组返回
解析2:
注释的意思x的迭代方法,其实是_.property(x)的简写,获取迭代元素对象x的值
根据解析1的思路就一目了然的,明白了,其实是过滤{ 'x': 1 }的元素。