Hoe te controleren of een waarde niet null en geen lege string is in JS

Is er een controle of een waarde niet null is en geen lege string in Javascript? Ik gebruik de volgende:

var data; //get its value from db 
if(data != null && data != '') {
   // do something
}

Maar ik vraag me af of er een andere betere oplossing is. Bedankt.


Antwoord 1, autoriteit 100%

Als u echt wilt bevestigen dat een variabele niet null is en niet specifiek een lege tekenreeks, schrijft u:

if(data !== null && data !== '') {
   // do something
}

Merk op dat ik je code heb gewijzigd om te controleren op typegelijkheid (!==|===).

Als u er echter zeker van wilt zijn dat een code alleen voor “redelijke” waarden wordt uitgevoerd, kunt u, zoals anderen al hebben aangegeven, schrijven:

if (data) {
  // do something
}

Omdat in javascript zowel null-waarden als lege tekenreeksen gelijk zijn aan false (d.w.z. null == false).

Het verschil tussen die 2 delen van code is dat, voor de eerste, elke waarde die niet specifiek null of een lege string is, de ifzal invoeren. Maar op de tweede zal elke true-ish waarde de ifinvoeren: false, 0, null, undefineden lege strings, niet.


Antwoord 2, autoriteit 11%

Zowel nullals een lege string zijn valse waarden in JS. Daarom

if (data) { ... }

is volledig voldoende.

Een kanttekening echter: ik zou vermijden een variabele in mijn code te hebben die zich in verschillende typen zou kunnen manifesteren. Als de gegevens uiteindelijk een string zullen zijn, dan zou ik mijn variabele in eerste instantie definiëren met een lege string, dus je kunt dit doen:

if (data !== '') { ... }

zonder dat de null (of andere rare dingen zoals data = "0") in de weg zitten.


Antwoord 3, autoriteit 9%

In plaats van

if(data !== null && data !== ''  && data!==undefined) {
// do something
}

U kunt onderstaande eenvoudige code gebruiken

if(Boolean(value)){ 
// do something 
}
  • Waarden die intuïtief ‘leeg’ zijn, zoals 0, een lege tekenreeks, null, ongedefinieerd en NaN, worden onwaar
  • Andere waarden worden waar

Antwoord 4, autoriteit 3%

Ik test vaak op waarheidswaarde en ook op lege spaties in de string:

if(!(!data || data.trim().length === 0)) {
  // do something here
}

Als je een tekenreeks hebt die uit een of meer lege spaties bestaat, wordt deze geëvalueerd als waar.


Antwoord 5, autoriteit 3%

if (data?.trim().length > 0) {
   //use data
}

de ?.optionele ketenoperatorzal kortsluiten en undefinedretourneren als de gegevens nullishzijn (nullof undefined) wat resulteert in false in de if-expressie.


Antwoord 6

Zowel null als leeg kunnen als volgt worden gevalideerd:

<script>
function getName(){
    var myname = document.getElementById("Name").value;
    if(myname != '' && myname != null){
        alert("My name is "+myname);
    }else{
        alert("Please Enter Your Name");
    }       
}


Antwoord 7

probeer het———-

function myFun(){
var inputVal=document.getElementById("inputId").value;
if(inputVal){
document.getElementById("result").innerHTML="<span style='color:green'>The value is "+inputVal+'</span>';
}
else{
document.getElementById("result").innerHTML="<span style='color:red'>Something error happen! the input May be empty.</span>";
}
}
<input type="text" id="inputId">
<input type="button" onclick="myFun()" value="View Result">
<h1 id="result"></h1>

Antwoord 8

Ik was het zo zat om specifiek op null en lege strings te controleren, dat ik nu meestal gewoon een kleine functie schrijf en aanroep om het voor mij te doen.

/**
 * Test if the given value equals null or the empty string.
 * 
 * @param {string} value
**/
const isEmpty = (value) => value === null || value === '';
// Test:
isEmpty('');        // true
isEmpty(null);      // true
isEmpty(1);         // false
isEmpty(0);         // false
isEmpty(undefined); // false

Antwoord 9

Als we in essentie leeg zijn, kunnen een van de volgende gegeven omstandigheden betekenen;

  • 0 zoals in nummerwaarde
  • 0.0 zoals in float-waarde
  • ‘0’ zoals in stringwaarde
  • ‘0.0’ zoals in stringwaarde
  • NULL AS IN NULL-waarde, vanaf de kans kan het ook ongedefinieerd zijn of het mag niet
  • undefined als in ongedefinieerde waarde
  • FALSE AS IN DE VALSE NEWALY WAARDE, ALS PER KANS 0 OOK ALS NEWYY MAAR WAT WE ALS WE ONDISCHE ZIJN ALS HET IS
  • ” Lege steekwaarde zonder witte ruimte of tab
  • ” string met witte ruimte of tabblad alleen

In de real-life-situatie zoals op vermeld, kunnen we ze allemaal of soms willen testen die we misschien alleen willen testen voor beperkte reeks voorwaarden.

Over het algemeen if(!a){return true;}dient het doel ervan, het is echter niet de grotere reeks voorwaarden.

Nog een hack die zijn ronde heeft gemaakt, is return (!value || value == undefined || value == "" || value.length == 0);

Maar wat als we controle over het hele proces nodig hebben?

Er is geen eenvoudige whiplash-oplossing in native-core Javascript die het moet worden aangenomen. Overweegt dat we steun laten vallen voor legacy IE11 (om eerlijk te zijn, zelfs Windows heeft dit wel) onder de oplossing die is geboren uit frustratie werkt in alle moderne browsers;

function empty (a,b=[])
 {if(!Array.isArray(b)) return; 
 var conditions=[null,'0','0.0',false,undefined,''].filter(x => !b.includes(x));
 if(conditions.includes(a)|| (typeof a === 'string' && conditions.includes(a.toString().trim())))
 {return true;};
 return false;};`

Logica achter de oplossing is functie heeft twee parameters a en b , A is waarde die we moeten controleren, b is een array met ingestelde voorwaarden die we moeten uitsluiten vooraf gedefinieerde omstandigheden zoals hierboven vermeld. Standaardwaarde van B is ingesteld op een lege array [].

First Function-functie is om te controleren of B een array is of niet, zo niet dan vroeg de functie.

Volgende stap is om arrayverschil te berekenen van [null,'0','0.0',false,undefined,'']en van array b. Als B een lege array is vooraf gedefinieerde omstandigheden, zullen het anders staan, het zal matching-waarden verwijderen.

Voorwaarden = [vooraf gedefinieerde set] – [om uitgesloten te worden]
Filter -functie doet precies dat er gebruik van maken.
Nu we voorwaarden hebben in array ingesteld, moeten we alles wat we moeten doen, kijk of de waarde in omstandigheden array is.
Inclusief -functie doet precies dat het niet nodig is om smerige lussen van je eigen te schrijven, laat JS-motor het zware tillen.

gotcha
Als we een in de reeks moeten omzetten in vergelijking, dan zouden 0 en 0.0 goed rennen, maar niet-ongedefinieerde zou het hele script nog niet gedefinieerd zijn. We hebben Edge Case-oplossing nodig. Onder eenvoudige || bedekt de randzaak als eerste voorwaarde niet is voldaan. Het uitvoeren van een andere vroege controle via onder meer, maakt vroege afslag, indien niet voldaan.

if(conditions.includes(a)||  (['string', 'number'].includes(typeof a) && conditions.includes(a.toString().trim())))

De functie

trim() dekt alleen bredere witruimten en tabs en komt alleen van pas in het randscenario.

Speeltuin

function empty (a,b=[]){
if(!Array.isArray(b)) return;
conditions=[null,'0','0.0',false,undefined,''].filter(x => !b.includes(x));
if(conditions.includes(a)|| 
(['string', 'number'].includes(typeof a) && conditions.includes(a.toString().trim()))){
 return true;
} 
return false;
}
console.log('1 '+empty());
console.log('2 '+empty(''));
console.log('3 '+empty('      '));
console.log('4 '+empty(0));
console.log('5 '+empty('0'));
console.log('6 '+empty(0.0));
console.log('7 '+empty('0.0'));
console.log('8 '+empty(false));
console.log('9 '+empty(null));
console.log('10 '+empty(null,[null]));
console.log('11 dont check 0 as number '+empty(0,['0']));
console.log('12 dont check 0 as string '+empty('0',['0']));
console.log('13 as number for false as value'+empty(false,[false]));

Antwoord 10

Eenvoudige oplossing om te controleren of string undefinedof nullof ""is:-

const value = null;
if(!value) {
  console.log('value is either null, undefined or empty string');
}

Antwoord 11

function validateAttrs(arg1, arg2, arg3,arg4){
    var args = Object.values(arguments);
    return (args.filter(x=> x===null || !x)).length<=0
}
console.log(validateAttrs('1',2, 3, 4));
console.log(validateAttrs('1',2, 3, null));
console.log(validateAttrs('1',undefined, 3, 4));
console.log(validateAttrs('1',2, '', 4));
console.log(validateAttrs('1',2, 3, null));

Other episodes