588 Stimmen

Wie kann man prüfen, ob ein Array leer ist oder existiert?

Wenn die Seite zum ersten Mal geladen wird, muss ich prüfen, ob sich ein Bild in image_array und laden Sie das letzte Bild.

Andernfalls deaktiviere ich die Vorschau-Schaltflächen, weise den Benutzer darauf hin, dass er auf die Schaltfläche "Neues Bild" klicken soll, und erstelle ein leeres Feld, in das die Bilder eingefügt werden;

Das Problem ist, dass image_array im else brennt alle Zeit. Wenn ein Array vorhanden ist - es überschreibt es einfach, aber Alarm funktioniert nicht.

if(image_array.length > 0)
    $('#images').append('<img src="'+image_array[image_array.length-1]+'" class="images" id="1" />');
else{
    $('#prev_image').attr('disabled', 'true');
    $('#next_image').attr('disabled', 'true');
    alert('Please get new image');
    var image_array = [];
}

UPDATE Bevor ich html lade, habe ich etwas wie dieses:

<?php if(count($images) != 0): ?>
<script type="text/javascript">
    <?php echo "image_array = ".json_encode($images);?>
</script>
<?php endif; ?>

3voto

Oleksandr Yefymov Punkte 5010

Am besten ist es, zu prüfen, wie:

    let someArray: string[] = [];
    let hasAny1: boolean = !!someArray && !!someArray.length;
    let hasAny2: boolean = !!someArray && someArray.length > 0; //or like this
    console.log("And now on empty......", hasAny1, hasAny2);

Siehe vollständige Liste der Muster: code sample results

3voto

Nikul Patel Punkte 33

Wie wäre es damit? Überprüfung für die Länge der undefinierten Array kann Ausnahme auslösen.

if(image_array){
//array exists
    if(image_array.length){
    //array has length greater than zero
    }
}

3voto

insign Punkte 4283

Ein einfacher Weg, der nicht zu Ausnahmen führt, wenn nicht vorhanden und in boolesch konvertieren:

!!array

Beispiel:

if (!!arr) {
  // array exists
}

2voto

Jim Factor Punkte 1277

Ich stoße bei Javascript häufig auf dieses Problem. Für mich ist der beste Weg, es zu tun ist, um eine sehr breite Prüfung vor der Überprüfung der Länge setzen. Ich sah einige andere Lösungen in dieser Q&A, aber ich wollte in der Lage sein, für entweder zu überprüfen null ou undefined oder ein anderer falscher Wert.

if(!array || array.length == 0){
    console.log("Array is either empty or does not exist")
}

Dabei wird zunächst geprüft, ob undefined , null oder andere falsche Werte. Wenn einer dieser Werte wahr ist, wird der boolesche Wert vervollständigt, da es sich um eine OR . Dann die riskantere Prüfung der array.length die einen Fehler verursachen könnte, wenn Array undefiniert ist, kann überprüft werden. Dies wird nie erreicht, wenn array es undefined ou null Daher ist die Reihenfolge der Bedingungen sehr wichtig.

1voto

Tommie C. Punkte 12311

Nachfolgend meine Lösung, verpackt in einer Funktion, die eine Fehler auslöst, um ein paar Probleme mit dem Objektbereich und allen Typen zu lösen möglichen Datentypen, die an die Funktion übergeben werden.

Hier ist meine Tüftelei, mit der ich dieses Problem untersucht habe ( Quelle )

var jill = [0];
var jack;
//"Uncaught ReferenceError: jack is not defined"

//if (typeof jack === 'undefined' || jack === null) {
//if (jack) {
//if (jack in window) {
//if (window.hasOwnP=roperty('jack')){
//if (jack in window){

function isemptyArray (arraynamed){
    //cam also check argument length
  if (arguments.length === 0) { 
    throw "No argument supplied";
  }

  //console.log(arguments.length, "number of arguments found");
  if (typeof arraynamed !== "undefined" && arraynamed !== null) {
      //console.log("found arraynamed has a value");
      if ((arraynamed instanceof Array) === true){
        //console.log("I'm an array");
        if (arraynamed.length === 0) {
            //console.log ("I'm empty");
            return true;
        } else {
          return false;
        }//end length check
      } else {
        //bad type
        throw "Argument is not an array";
      } //end type check
  } else {
    //bad argument
    throw "Argument is invalid, check initialization";;
  }//end argument check
}

try {
  console.log(isemptyArray(jill));
} catch (e) {
    console.log ("error caught:",e);
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X