Задача
array::map
предназначена для отображения каждого элемента из массива в новый массив. Операция представляет собой однозначное соответствие . Он также предназначен для использования в качестве чистой функции, то есть имеет побочные эффекты ZERO , такие как удаление элементов массива, по которому он итерируется. array::reduce
и array::filter
- лучшие варианты для удаления элементов или иного «уменьшения» входных данных.
Решение
Использование array::filter
позволяет перебирать через массив и вернуть новый массив, содержащий только элементов, которые проходят предикат фильтра. Создайте функцию предиката фильтра, которая возвращает истину или ложь, если свойство количества объекта больше, чем 0
.
const quantityGreaterThanZero = ({ quantity }) => quantity > 0;
Примечание: 0
- это значение "falsey", числа больше 0
«истинные» значения, поэтому вышеприведенное можно упростить, чтобы просто вернуть количество. Если это правда, предикатная функция истинна, иначе она ложна.
const quantityGreaterThanZero = ({ quantity }) => quantity;
Теперь вы можете передать свою функцию предиката в качестве обратного вызова на array::filter
.
const greaterThanZero = data.filter(quantityGreaterThanZero);
const data = [
{ label: "Top", quantity: 2 },
{ label: "Bottoms", quantity: 0 },
{ label: "Jacket", quantity: 1 },
{ label: "Beddings", quantity: 0 },
{ label: "Shoes", quantity: 0 }
];
const quantityGreaterThanZero = ({ quantity }) => quantity;
console.log(data.filter(quantityGreaterThanZero));