我正在使用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
,""
等……
那我有什么选择?
答案 0 :(得分:1)
您可以使用Array.filter()
或lodash过滤器,然后返回值:
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 :(得分:1)
您可以这样做:
const operatingCountries = reject(operating_countries, 'country')
并且它将返回country
属性具有空值,空格,未定义值等的所有记录。这是因为在这种情况下,country
的评估结果为false
。
如果您要删除不良国家/地区的记录,而只保留好国家/地区的记录,则可以使用普通的javascript过滤器:
const operatingCountries = operating_countries.filter(({country}) => country)
之所以可行,是因为具有多个字符的字符串被视为true
。
答案 2 :(得分:0)
只需检查它是否虚假:
const operatingCountries = reject(operating_countries, ([e, f]) => f));
答案 3 :(得分:0)
您可以传入自己的函数来定义应如何拒绝。在这里,我定义了一个箭头函数,该函数从每个对象中提取country
(使用destructuing assignment),如果它是“ falsey”,则将其拒绝:
const operatingCountries = reject(operating_countries, ({country}) => !country);
console.log(operatingCountries);