Не могу понять описание метода differenceBy в документации
В документации lodash есть описание метода differenceBy
Этот метод похож на _.difference за исключением того, что он принимает итерацию, которая вызывается для каждого элемента массива и значений для генерации критерия, по которому они сравниваются. Порядок и ссылки на результирующие значения определяются первым массивом. Итератор вызывается с одним аргументом
Не могу понять, что здесь имеется в виду, не могли бы объяснить подробнее?
Ответы (1 шт):
Нашла, это про differenceBy в лодаше. Имеется в виду, что этот метод принимает ещё третий аргумент, функцию, которая будет вызвана на каждый элемент перед их сравнением.
Давайте возьмём пример из документации:
_.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);
// => [1.2]
Функция Math.floor будет вызвана на каждый элемент, прежде чем их сравнить. Поэтому 2.1 не попадет в результат, ведь Math.floor(2.1) === Math.floor(2.3)
Во втором примере показан короткий способ записи, когда мы работаем с объектами и надо взять значение по ключу. То есть
_.differenceBy([{ x: 2 }, { x: 1 }], [{ x: 1 }], 'x')
это то же самое, что _.property('x') или
_.differenceBy([{ x: 2 }, { x: 1 }], [{ x: 1 }], item => item['x'])
то есть, мы берём каждый элемент массива и применяем к нему лодашевскую функцию property, которая берёт значение из объекта по указанному пути. Путь - это один или несколько ключей, записанные в виде строки. Как она работает
_.property('x')({ x: 2 })
// => 2
Соответственно для { x: 1 } из обоих массивов она вернёт 1 и этот элемент будет исключен из результата differenceBy