Question Le moyen le plus simple de vérifier si la chaîne est nulle ou vide


J'ai ce code qui vérifie la chaîne vide ou nulle. Il travaille dans les tests.

eitherStringEmpty= (email, password) ->
  emailEmpty = not email? or email is ''
  passwordEmpty = not password? or password is ''
  eitherEmpty = emailEmpty || passwordEmpty         

test1 = eitherStringEmpty "A", "B" # expect false
test2 = eitherStringEmpty "", "b" # expect true
test3 = eitherStringEmpty "", "" # expect true
alert "test1: #{test1} test2: #{test2} test3: #{test3}"

Ce que je me demande, c'est s'il y a une meilleure façon que not email? or email is ''. Puis-je faire l'équivalent de C # string.IsNullOrEmpty(arg) dans CoffeeScript avec un seul appel? Je pourrais toujours définir une fonction pour cela (comme je l'ai fait) mais je me demande s'il y a quelque chose dans la langue qui me manque.


80
2017-11-14 20:46


origine


Réponses:


Ouaip:

passwordNotEmpty = not not password

ou plus court:

passwordNotEmpty = !!password

113
2017-11-14 20:48



Ce n'est pas tout à fait équivalent, mais email?.length sera seulement véridique si email est non nul et a un non nul .length propriété. Si vous not cette valeur le résultat devrait se comporter comme vous le souhaitez pour les chaînes et les tableaux.

Si email est null ou n'a pas de .length, puis email?.length évaluera à null, qui est falsey. Si elle a un .length alors cette valeur évaluera sa longueur, qui sera fausse si elle est vide.

Votre fonction pourrait être implémentée comme:

eitherStringEmpty = (email, password) ->
  not (email?.length and password?.length)

37
2017-11-14 20:49



C'est un cas où la "véracité" est utile. Vous n'avez même pas besoin de définir une fonction pour cela:

test1 = not (email and password)

Pourquoi ça marche?

'0'       // true
'123abc'  // true
''        // false
null      // false
undefined // false

14
2017-11-14 23:37



unless email? and email
  console.log 'email is undefined, null or ""'

Vérifiez d'abord si l'email n'est pas indéfini et non nul avec l'opérateur existentiel, alors si vous savez qu'il existe le and email la partie ne retournera que false si la chaîne de courrier électronique est vide.


4
2018-06-13 13:01



Vous pouvez utiliser le coffeescript ou = opération

s = ''    
s or= null

2
2017-08-30 19:36



Si vous devez vérifier que le contenu est une chaîne, non null et non un tableau, utilisez une comparaison simple de type:

 if typeof email isnt "string"

1
2017-07-30 22:11



Voici une jsfiddle démontrer un moyen très facile de le faire.

Fondamentalement, vous faites simplement cela est javascript:

var email="oranste";
var password="i";

if(!(email && password)){
    alert("One or both not set");        
}
else{
    alert("Both set");   
}

En coffescript:

email = "oranste"
password = "i"
unless email and password
  alert "One or both not set"
else
  alert "Both set"

J'espère que cela aide quelqu'un :)


1
2017-07-30 22:28



Je pense que le point d'interrogation est le moyen le plus simple d'appeler une fonction sur une chose si la chose existe.

par exemple

car = {
  tires: 4,
  color: 'blue' 
}

vous voulez obtenir la couleur, mais seulement si la voiture existe ...

coffeescript:

 car?.color

traduit en javascript:

if (car != null) {
  car.color;
}

il s'appelle l'opérateur existentiel http://coffeescript.org/documentation/docs/grammar.html#section-63


1
2018-03-06 04:07



Au lieu de la réponse acceptée passwordNotEmpty = !!password vous pouvez utiliser

passwordNotEmpty = if password then true else false

Il donne le même résultat (la différence que dans la syntaxe).

Dans la première colonne est une valeur, dans la seconde est le résultat de if value:

0 - false
5 - true
'string' - true
'' - false
[1, 2, 3] - true
[] - true
true - true
false - false
null - false
undefined - false

1
2018-01-07 13:14



Basé sur cette réponse à propos de vérifier si une variable a un truthy valeur ou pas, vous avez juste besoin d'une ligne:

result = !email or !password

& vous pouvez l'essayer pour vous console Coffeescript en ligne


0
2017-12-18 12:32



Je suis presque certain que la réponse de @thejh était suffisante pour vérifier la chaîne vide MAIS, Je pense que nous avons souvent besoin de vérifier que «existe-t-il? et ensuite nous devons vérifier 'Est-ce vide? inclure une chaîne, un tableau et un objet '

C'est la façon la plus courte pour que CoffeeScript fasse cela.

tmp? and !!tmp and !!Object.keys(tmp).length

Si nous gardons cet ordre de question, cela sera vérifié par cette commande   1. existe-t-il?   2. pas de chaîne vide?   3. objet non vide?

il n'y avait donc aucun problème pour toutes les variables, même dans le cas de non-existence.


0
2018-03-01 14:31