2016-04-18 3 views
0

Я ищу способ проверить значение. Я хотел бы, чтобы вести себя таким образом:Lodash: _.isBlank?

_.isBlank(undefined) : true 
_.isBlank(null) : true 
_.isBlank(NaN) : true 
_.isBlank('') : true 
_.isBlank('a') : false 
_.isBlank(0) : false 
_.isBlank(1) : false 
_.isBlank({}) : true 
_.isBlank([]) : true 
_.isBlank({foo: 'bar'}) : false 
_.isBlank(['foo', 'bar']) : false 

Существует _.isNil, но _.isNil('') ложно. _.isEmpty звучит многообещающе, но _.isEmpty(0) - true. Конечно, я мог бы объединить несколько тестов вместе, но было бы чище иметь его из коробки, не так ли?

+2

'х == 0 'тривиальным соответствует вашим требованиям (и даже не нужен lodash). Вы ищете больше? Для чего вам это нужно? – Bergi

+1

Не уверен, в чем вопрос. Да, готовый метод был бы более чистым, но требование настолько специфично, что его нет, а создание собственного - тривиально. – JJJ

+1

'const isBlank = v => v === undefined || v === null || v === ''; '--- можно взять его и создать пакет npm. – zerkms

ответ

3

В вашем конкретном случае нет метода в Lodash.

Вы должны сделать функцию, если вы хотите перевести свое намерение:

function isBlank(value) { 
    return _.isEmpty(value) && !_.isNumber(value) || _.isNan(value); 
} 

Результаты:

isBlank(undefined) 
// => true 

isBlank(null) 
// => true 

isBlank('') 
// => true 

isBlank([]) 
// => true 

isBlank({}) 
// => true 

isBlank(NaN) 
// => true 

isBlank(0) 
// => false 
+0

Спасибо, что, наконец, предложил конструктивный ответ! :-) –

Смежные вопросы