ES6 mit Rest-Parametern
Wenn Sie in der Lage sind, ES6 zu verwenden, können Sie dies tun:
Rest Parameter
function sortArgs(...args) {
return args.sort(function (a, b) { return a - b; });
}
document.body.innerHTML = sortArgs(12, 4, 6, 8).toString();
Wie Sie in der Link
Die Restparameter-Syntax ermöglicht es uns, eine unbestimmte Anzahl von Argumenten als Array darzustellen.
Wenn Sie neugierig sind auf die ...
Syntax, heißt es Spread Operator und Sie können mehr lesen aquí .
ES6 mit Array.from()
Verwendung von Array.von :
function sortArgs() {
return Array.from(arguments).sort(function (a, b) { return a - b; });
}
document.body.innerHTML = sortArgs(12, 4, 6, 8).toString();
Array.from
konvertieren einfach Array-ähnliche oder Iterable-Objekte in Array-Instanzen.
ES5
Sie können auch einfach Array
's slice
Funktion auf ein Argument-Objekt anwenden und es in ein Standard-JavaScript-Array umwandeln. Sie müssen es dann nur noch manuell über den Prototyp von Array referenzieren:
function sortArgs() {
var args = Array.prototype.slice.call(arguments);
return args.sort();
}
Warum funktioniert das? Nun, hier ist ein Auszug aus dem ECMAScript 5-Dokumentation selbst :
ANMERKUNG : Die slice
Funktion ist absichtlich generisch; sie erfordert nicht, dass ihre este Wert ein Array-Objekt sein. Daher kann er auf andere Arten von Objekten übertragen und als Methode verwendet werden. Ob der slice
Funktion erfolgreich auf ein Host-Objekt angewendet werden kann, hängt von der Implementierung ab.
Deshalb, slice
funktioniert bei allem, was einen length
Eigenschaft, die arguments
bequem tut.
Si Array.prototype.slice
zu lang ist, können Sie es durch die Verwendung von Array-Literalen etwas abkürzen:
var args = [].slice.call(arguments);
Ich habe jedoch den Eindruck, dass die erste Version eindeutiger ist, und würde sie daher vorziehen. Der Missbrauch der Array-Literal-Notation fühlt sich hakelig an und sieht seltsam aus.
1 Stimmen
Eng verwandt: Wie funktioniert die Funktion Array.prototype.slice.call()?
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.