_.differenceBy(过滤值)

语法:

_.differenceBy(array, [values], [iteratee=_.identity])

源代码链接:source

npm包链接:npm package

描述:

与_.difference相比,它多接收一个iteratee参数。暂且称之为迭代器。array和values的元素值都需要先进行iteratee的参数的方法进行处理后再进行比较。结果值由第一个数组决定。

注意: 不同于 _.pullAllBy, _.differenceBy这个方法返回一个新数组。

开始版本:4.0.0

参数:

  • array (Array): 需要检查的数组。

  • [values] (...Array): 需要排除的值。

  • [iteratee=_.identity] (Function): 迭代元素时调用的方法。

返回值:

  • array (Array): 返回过滤有的新数组。

例子:

_.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()返回小于或等于一个给定数字的最大整数。

_.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);
// => [1.2]

思路过程一:迭代(Math.floor)元素后结果:[2.1, 1.2]=> [2, 1],[2.3, 3.4]=> [2, 3])

思路过程二:进行_.difference([2, 1], [2, 3]) 过滤值。 =》 剩下1

思路过程三:将1.2push到一个新的数组返回

解析2:

// The `_.property` iteratee shorthand
_.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');
// => [{ 'x': 2 }]

注释的意思x的迭代方法,其实是_.property(x)的简写,获取迭代元素对象x的值

根据解析1的思路就一目了然的,明白了,其实是过滤{ 'x': 1 }的元素。

资料:

每天一个lodash方法-differenceBy

Last updated