467 Stimmen

Wie kann ich das Objekt "arguments" in ein Array in JavaScript umwandeln?

El arguments Objekt in JavaScript ist eine seltsame Warze - es verhält sich in den meisten Situationen wie ein Array, aber es ist nicht eigentlich ein Array-Objekt. Da es sich um wirklich etwas ganz anderes verfügt es nicht über die nützlichen Funktionen von Array.prototype wie forEach , sort , filter und map .

Es ist trivial einfach, ein neues Array aus einem Argument-Objekt mit einer einfachen for-Schleife zu konstruieren. Zum Beispiel sortiert diese Funktion ihre Argumente:

function sortArgs() {
    var args = [];
    for (var i = 0; i < arguments.length; i++)
        args[i] = arguments[i];
    return args.sort();
}

Allerdings ist dies eine ziemlich erbärmliche Sache zu tun, nur um Zugang zu den äußerst nützlichen JavaScript-Array-Funktionen zu bekommen. Gibt es einen eingebauten Weg, um es mit der Standardbibliothek zu tun?

1 Stimmen

0 Stimmen

Es gefällt mir nicht, dass alle Antworten auf diese Frage die Absicht erkennen lassen, eine Sortierung vorzunehmen, und sort hat alle Antworten durchdrungen, aber das Sortieren war nur ein Beispiel von etwas, das Sie könnte tun mit einer geeigneten Anordnung. Die Absicht war, das Array zu erhalten. Ich kann die Frage nicht einmal tadeln, weil es richtig "zum Beispiel" heißt. Dennoch hat jede Antwort beschlossen, "sortieren" in das Beispiel für die Umwandlung der Argumente in ein Array einzubauen - manchmal zu eng, indem man das Sortieren mit dem Erhalten eines Arrays von Argumenten verwechselt.

-2voto

Dies ist eine sehr alte Frage, aber ich glaube, ich habe eine Lösung, die etwas einfacher zu schreiben ist als frühere Lösungen und nicht auf externe Bibliotheken angewiesen ist:

function sortArguments() {
  return Array.apply(null, arguments).sort();
}

2 Stimmen

Array.apply funktioniert nicht, wenn Sie nur ein einziges positives ganzzahliges Argument haben. Das ist so, weil new Array(3) erzeugt eine Array-Länge von 3 . Genauer gesagt wird das Ergebnis sein [undefined, undefined, undefined] und nicht [3] .

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