Как я могу использовать отклонение lodash, чтобы отклонить несколько возможных свойств одного и того же ключа? - PullRequest
0 голосов
/ 19 июня 2019

Я использую lodash reject , чтобы отклонить несколько возможных свойств массива объектов.

const operatingCountries = reject(operating_countries, ['country', null]);

Или

const operatingCountries = reject(operating_countries, ['country', ""]);

Или

const operatingCountries = reject(operating_countries, ['country', false]);

Итак, мне нужно будет сделать что-то вроде:

const operatingCountries = reject(operating_countries, ['country', null || 'country', ""]);

Итак, я хочу проверить свойство country, чтобы проверить, содержит ли оно строку. Не пустая строка. Мне нужно, чтобы оно приходило со значением, которое является строкой, мне не нужны никакие false, null, "" и т. Д. *

Итак, какие у меня есть варианты?

Ответы [ 4 ]

1 голос
/ 19 июня 2019

Вы можете использовать Array.filter() или фильтр Лодаша и вернуть значение:

const operating_countries = [{ country: '' }, { country: 'cats' }, { country: null }]

const result = operating_countries.filter(({ country }) => country)

console.log(result)

Или с lodash:

const operating_countries = [{ country: '' }, { country: 'cats' }, { country: null }]

const result = _.filter(operating_countries, 'country')

console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>
1 голос
/ 19 июня 2019

Вы можете сделать:

const operatingCountries = reject(operating_countries, 'country')

И он вернет все записи, которые имеют нулевые значения, пробелы, неопределенные значения и т. Д. Для свойства country.Это потому, что country для этих случаев оценивается в * 1006. *

Если вы хотите удалить записи с плохими странами и оставить только хорошие, то вы можете использовать простой фильтр javascript:

const operatingCountries = operating_countries.filter(({country}) => country)

Это работает, потому что строки, содержащие более одного символа, считаются true.

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

Вы можете передать свою собственную функцию, чтобы определить, как она должна отклоняться. Здесь я определил функцию стрелки, которая извлекает country (используя деструктурирующее присваивание ) из каждого объекта и отклоняет его, если это "falsey":

const operatingCountries = reject(operating_countries, ({country}) => !country);
console.log(operatingCountries);
0 голосов
/ 19 июня 2019

Просто проверьте, если это ложно:

const operatingCountries = reject(operating_countries, ([e, f]) => f));
...