2016-04-18 15 views
0

Ich bin auf der Suche nach einer Möglichkeit, einen Wert zu testen. Ich möchte es auf diese Weise verhalten: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 

Es gibt _.isNil, aber _.isNil('') ist falsch. _.isEmpty klang vielversprechend, aber _.isEmpty(0) ist true. Natürlich könnte ich mehrere Tests zusammen kombinieren, aber es wäre sauberer, es out-of-the-box zu haben, nicht wahr?

+2

'x == 0 'erfüllt trivialer Ihre Anforderungen (und nicht einmal brauche lodash). Suchst du mehr? Wofür brauchst du das? – Bergi

+1

Nicht sicher, was die Frage ist. Ja, eine Out-of-the-Box-Methode wäre sauberer, aber die Anforderung ist so spezifisch, dass es keine gibt, und das Erstellen Ihrer eigenen ist trivial. – JJJ

+1

'const isBlank = v => v === undefiniert || v === null || v === ''; '--- Man kann es nehmen und ein npm-Paket erstellen. – zerkms

Antwort

3

Es gibt keine Methode in Lodash für Ihren speziellen Fall.

Sie haben eine Funktion zu machen, wenn Sie Ihre Absicht übersetzen:

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

Ergebnisse:

isBlank(undefined) 
// => true 

isBlank(null) 
// => true 

isBlank('') 
// => true 

isBlank([]) 
// => true 

isBlank({}) 
// => true 

isBlank(NaN) 
// => true 

isBlank(0) 
// => false 
+0

Danke, dass Sie endlich eine konstruktive Antwort vorgeschlagen haben! :-) –