2017-05-10 3 views
0

ist Ich habe also ein Array, das ich erstellt habe, aber ich möchte eine Aktion ausführen, wenn eine oder mehrere Variablen in meinem Array leer sind.Wie kann ich überprüfen, ob eine Variable innerhalb eines Arrays mit JavaScript oder Jquery

Ich weiß, dass dieser Code oben falsch ist, weil es immer Letzteres startet

Also im Grunde

var fields = ["", "two", "three", "four", "five"]; 

Sollte Rückkehr Einer oder mehr Variablen leer sind!

Und:

var fields = ["one", "two", "three", "four", "five"]; 

Sollte Rückkehr Alle Variablen sind hier!

Antwort

2

Eine Möglichkeit wäre, Array.prototype.every() zu verwenden. Eine Sache, die über every() schön ist, ist, dass, wenn ein einzelnes Element falsch zurückgibt, es die Array-Iteration kurzschließen wird, was bedeutet, dass es die unnötigen weiteren Elemente im Array nicht weiter verarbeiten wird.

var fields = ["", "two", "three", "four", "five"]; // invalid array 
 
var fields2 = ["one", "two", "three", "four", "five"]; // valid array 
 

 
function validateFields (fields) { 
 
    var everyFieldIsValid = fields.every(function (field) { 
 
    // ensure there are no gaps in the array and that each element is not 
 
    // undefined, null, or equal to empty string ("") 
 
    return field != null && field !== ""; 
 
    }); 
 
    
 
    if (everyFieldIsValid) { 
 
    // success logic goes here - you can console.log, alert, return true/false, etc. 
 
    return "All variables are here!"; 
 
    } 
 
    else { 
 
    // failure logic goes here - you can console.log, alert, return true/false, etc. 
 
    return "One or more variables are empty!"; 
 
    } 
 
} 
 

 
console.log(validateFields(fields)); 
 
console.log(validateFields(fields2));

+1

Eine sehr einfache Lösung. Ich habe nie darüber nachgedacht. Werde es jetzt versuchen! – Mariton

+0

@Mariton Hat es für Sie funktioniert? – mhodges

+1

Arbeitete perfekt! Entschuldigung für die verspätete Antwort. – Mariton

2

können Sie überprüfen, ob jedes Array-Element, um Ihren Zustand entspricht Array.prototype.every einer Funktion:

var fields = ["", "two", "three", "four", "five"]; 
 

 
var res = fields.every(f => f != null && f.length) ? 'all here' : 'some are empty'; 
 

 
console.log(res)

every(f => f != null && f.length) prüft, ob jedes Element definiert ist, ungleich null und hat eine Länge> 0. In dieser Bedingung wird res eine Antwort zugewiesen (ternary operator wird anstelle von if verwendet, um den Code klarer zu machen).

+0

"ternary Operator wird anstelle von verwendet, um den Code klarer zu machen" ... sagte niemand jemals ... – mhodges

0

tun:

fields.filter(function(object){ 
     return object.trim().length > 0; 
    }); 

dies alle leeren Felder löschen. Fügen Sie einfach conditionnal hinzu, wenn Sie wissen möchten, ob es ein leeres Feld gibt!

+0

Dieser Code macht eine Menge Annahmen .. '1. Angenommen, jedes Element im Array ist eine Zeichenfolge, und es gibt keine "Löcher" in der Matrix ", 2. Angenommen, das OP möchte die leeren Elemente entfernen. Ich bin mir ziemlich sicher, dass keine dieser Annahmen richtig ist, aber Sie sollten das OP um Klärung bitten. – mhodges

Verwandte Themen