Например, если ваш массив чисел:
const nums = [1, 2, 3, 4, 5, 6]
и у вас есть функция isEven
, которая принимает число и возвращает true
, если оно четное, и false
, если оно есть не четное (ie нечетное):
function isEven(num) {
return num % 2 === 0;
}
Затем выполнение _.filter(arr, isEven)
выполнит следующую логику c:
Итак, filter()
выполняет функцию isEven
для каждого числа в вашем массив, и если он возвращает true
, он добавляется в новый массив (ie: он сохраняется).
_.reject()
делает противоположное _.filter()
- то есть он сохраняет все элементы, для которых функция обратного вызова возвращает false
. Как вы знаете, _.filter()
сохраняет значения, для которых он возвращает true
, вы можете использовать _.filter()
, отрицая значение логического значения, возвращаемого test(value)
. Таким образом, когда test(value)
возвращает false
, вы отрицаете его на true
, заставляя метод _.filter()
сохранить этот элемент. Если test(value)
вернет true
, то вы будете отрицать, что оно равно false
, в результате чего метод фильтра отбрасывает это value
.