如何使用lodash拒绝拒绝同一键的多个可能属性?

时间:2019-06-19 08:14:48

标签: javascript ecmascript-6 lodash

我正在使用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属性,以检查它是否带有字符串。不是空字符串。我需要它带有一个字符串值,我不需要任何falsenull""等……

那我有什么选择?

4 个答案:

答案 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);