Как я могу фильтровать по 2 различным свойствам? - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь отфильтровать массив объектов перед отправкой его в бэкэнд. Он должен идти на сервер без ложных значений.

Если я сделаю это, это сработает:

theArray.filter(({ name }) => name)

Но мне нужно добавить еще одно свойство:

theArray.filter(({ name, percentage }) => { return { percentage, name } }),

если я делаю это, как указано выше, это не работает, что я пропускаю?

Ответы [ 3 ]

3 голосов
/ 19 июня 2019

Ваша функция фильтра должна возвращать логическое значение, которое определяет, следует ли сохранять элемент массива:

theArray.filter(({name, percentage}) => {return name && percentage});

или просто

theArray.filter(({name, percentage}) => name && percentage);
2 голосов
/ 19 июня 2019

Вы можете взять значения и использовать либо логическое И && (без ложных значений)

theArray.filter(({ name, percentage }) => name && percentage)

или логическое ИЛИ || (одно или оба значения истинно ).

theArray.filter(({ name, percentage }) => name || percentage)
1 голос
/ 19 июня 2019

Итак, в настоящее время вы извлекаете свойство name из каждого объекта в массиве, а затем выполняете для него «правдивый» тест.

Для строки (предположительно похожей на имя) это означает, что undefined, null и пустая строка будут равны false.

Для числа (предположительно в процентах) это означает, что undefined, null и 0 будет равно false.

В этом случае вы могли бы использовать следующее (имея в виду вышеупомянутые предостережения):

theArray.filter(({ name, percentage }) => percentage && name)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...