Wie überprüfe ich, ob eine Variable in JavaScript ein Array ist?

Lesezeit: 3 Minuten

Benutzer-Avatar
Andy McCluggage

Wie überprüfe ich, ob eine Variable in JavaScript ein Array ist?

if (variable.constructor == Array)

  • Die Überprüfung, ob ein Objekt ein Array ist, hat einige spezifische Einschränkungen … Peters Antwort ist die einzige, die Sie verwenden sollten.

    – Alemb

    20. April 2009 um 9:20 Uhr

  • @Andy Es scheint, dass meine Antwort nicht die beste ist. Vielleicht sollten Sie eine andere Antwort als akzeptiert auswählen?

    – Peter Schmidt

    7. August 2011 um 18:10 Uhr

  • Guter Punkt Petrus. Ich hatte nicht bemerkt, dass Ihre Antwort solche Kommentare erhielt. Ich glaube, ich habe schon lange damit begonnen, die Funktion JQuery.isArray zu verwenden, wenn ich nach Arrays suche, und interessanterweise ist das anders implementiert als jede andere hier gegebene Antwort. Ich habe die beliebte Antwort als richtig markiert.

    – Andy McCluggage

    8. August 2011 um 14:27 Uhr

  • Entschuldigung, das ist falsch. Ich habe etwas genauer hingeschaut und (ab Version 1.6.2) gibt JQuery immer noch Prüfungen mit Vergleichen in der Form …. toString.call(obj) === “[object Array]”

    – Andy McCluggage

    8. August 2011 um 14:43 Uhr


  • “Diese Frage wurde schon einmal gestellt” … NEIN, diese Frage wurde NACH dieser gestellt

    – Sauerstoff

    12. November 2017 um 0:47 Uhr

Benutzer-Avatar
Brett Bender

Sie könnten auch verwenden:

if (value instanceof Array) {
  alert('value is Array!');
} else {
  alert('Not an array');
}

Das scheint mir eine ziemlich elegante Lösung zu sein, aber jedem das Seine.

Bearbeiten:

Ab ES5 gibt es jetzt auch:

Array.isArray(value);

Dies wird jedoch bei älteren Browsern brechen, es sei denn, Sie verwenden Polyfills (im Grunde … IE8 oder ähnliches).

  • Ich schlage vor, bestehen Sie darauf, bei diesem “instanceof”-Operator zu bleiben, wenn Sie nicht mit mehreren Frames arbeiten. Dies ist der richtige Weg, um den Objekttyp zu überprüfen.

    – BYK

    20. April 2009 um 9:21 Uhr

  • Der einzige Fall, in dem dies fehlschlagen würde, ist, wenn Sie seitdem versuchen, auf ein Array oder Objekt zu testen Array instanceof Object == true.

    –Pierre

    28. November 2012 um 22:33 Uhr

  • Wenn Sie jQuery verwenden, um Elemente mit find(‘code’) oder ähnlichem zu übergeben, sollten Sie die Variable mit überprüfen variable instanceof Object da es keine Instanz eines Arrays ist.

    – stecken

    1. Mai 2013 um 15:12 Uhr


  • @BrettBender Wenn Sie noch aktiv sind, könnten Sie Ihre Antwort aktualisieren, um widerzuspiegeln, dass wir ab ES5 Array.isArray haben?

    – Nobbynob Litlun

    22. Mai 2014 um 3:19 Uhr

  • @AndrewK siehe Fela Winkelmolens Antwort, die die Methode Array.isArray enthält. Was diese Antwort betrifft, ist es wahrscheinlich keine gute Idee, eine Antwort durch Bearbeiten in eine andere Antwort zu verwandeln.

    – Muffin

    24. August 2014 um 20:45 Uhr

  • Dies ist wahrscheinlich der beste modernste Ansatz. Ich habe es zusammen mit dem Polyfill auf MDN gesehen, das bedeutet also, dass Mozilla ihm vertraut developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

    – John

    12. April 2014 um 0:13 Uhr

  • Vermisst du dich nicht prototype dort? Scheint so zu sein Object.prototype.toString.call.

    – Brock

    20. November 2014 um 11:16 Uhr

Benutzer-Avatar
Jared McAteer

Wenn Sie nur mit EcmaScript 5 und höher zu tun haben, können Sie das integrierte verwenden Array.isArray Funktion

z.B,

Array.isArray([])    // true
Array.isArray("foo") // false
Array.isArray({})    // false

Benutzer-Avatar
Jo Frambach

Für diejenigen, die Code-Golf spielen, ein unzuverlässiger Test mit den wenigsten Zeichen:

function isArray(a) {
  return a.map;
}

Dies wird häufig beim Durchlaufen/Abflachen einer Hierarchie verwendet:

function golf(a) {
  return a.map?[].concat.apply([],a.map(golf)):a;
}

input: [1,2,[3,4,[5],6],[7,[8,[9]]]]
output: [1, 2, 3, 4, 5, 6, 7, 8, 9]

Benutzer-Avatar
Hank Gay

Über Crockford:

function typeOf(value) {
    var s = typeof value;
    if (s === 'object') {
        if (value) {
            if (value instanceof Array) {
                s="array";
            }
        } else {
            s="null";
        }
    }
    return s;
}

Der Hauptfehler, den Crockford erwähnt, ist die Unfähigkeit, Arrays korrekt zu bestimmen, die in einem anderen Kontext erstellt wurden, z. window. Diese Seite hat eine viel ausgefeiltere Version, wenn dies nicht ausreicht.

1010800cookie-checkWie überprüfe ich, ob eine Variable in JavaScript ein Array ist?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy