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; ?>

1voto

Plippie Punkte 2685

Wenn Sie eine Variable nicht als Array deklariert haben, können Sie eine Prüfung erstellen:

if(x && x.constructor==Array && x.length){
   console.log("is array and filed");
}else{
    var x= [];
    console.log('x = empty array');
}

Dies prüft, ob die Variable x existiert und wenn ja, ob sie ein gefülltes Array ist. Andernfalls wird ein leeres Array erstellt (oder Sie können andere Dinge tun);

Wenn Sie bestimmte eine Array-Variable erstellt wird, gibt es eine einfache Prüfung:

var x = [];

if(!x.length){
    console.log('empty');
} else {
    console.log('full');
}

Sie können prüfen meine Fiedel hier mit zeigt die meisten Möglichkeiten zur Überprüfung von Array.

1voto

Thiago Silva Punkte 456

Der Weg, den ich gefunden habe, um zu arbeiten (aus einer anderen Sprache kommend) ist eine einfache Funktion zu testen.

eine Funktion erstellen, die die Größe des Arrays überprüft und die Länge als Parameter übergibt.

isEmpty(size){
        if(size==0) {
            return true;
        } else  {
            return false;
        }
    }

//then check
if(isEmpty(yourArray.length)==true){
            //its empty
        } else {
            //not empty
        }

0voto

Sie sollten dies tun

    if (!image_array) {
      // image_array defined but not assigned automatically coerces to false
    } else if (!(0 in image_array)) {
      // empty array
      // doSomething
    }

0voto

Tom Stickel Punkte 18167

Für mich sicher einige der hoch bewerteten Antworten "Arbeit", wenn ich sie in jsfiddle setzen, aber wenn ich eine dynamisch generierte Menge von Array-Liste eine Menge dieser Code in den Antworten einfach nicht für mich arbeiten.

Das ist es, was bei mir funktioniert.

var from = [];

if(typeof from[0] !== undefined) {
  //...
}

Beachten Sie: KEINE Anführungszeichen um undefiniert, und ich kümmere mich nicht um die Länge.

0voto

Kamil Kiełczewski Punkte 69048

Wahrscheinlich Ihr image_array ist kein Array, sondern ein OBJEKT mit length Eigenschaft (wie string) - versuchen

if(image_array instanceof Array && image_array.length)

function test(image_array) {
  if(image_array instanceof Array && image_array.length) { 
    console.log(image_array,'- it is not empty array!')
  } else {
    console.log(image_array,'- it is empty array or not array at all!')
  }
}

test({length:5});
test('undefined');
test([]);
test(["abc"]);

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