So implementieren Sie das folgende Szenario nur mit Javascript:
- Erstellen Sie ein Auto - Objekt mit Eigenschaften (Höchstgeschwindigkeit, Marke, etc.)
- Sortieren Sie eine Liste der nach diesen Eigenschaften geordneten Autos
javascript
arrays
sorting
oop
properties
Konstrukteur
quelle
quelle
Antworten:
Javascript hat die Sortierfunktion , die eine andere Funktion als Parameter annehmen kann - diese zweite Funktion wird verwendet, um zwei Elemente zu vergleichen.
Beispiel:
ok, aus deinem Kommentar sehe ich, dass du das Wort 'sort' im falschen Sinne verwendest. In der Programmierung bedeutet "sortieren" "Dinge in eine bestimmte Reihenfolge bringen", nicht "Dinge in Gruppen anordnen". Letzteres ist viel einfacher - so "sortieren" Sie die Dinge in der realen Welt
quelle
a.someProp - b.someProp
) sortiert vom niedrigsten zum höchsten und das reverse (b.someProp - a.someProp
) vom höchsten zum niedrigsten. Wenn die Funktion weniger als 0 zurückgibt, steht aBeispiel.
Dies läuft auf cscript.exe unter Windows.
Sie können auch einen allgemeinen Sortierer erstellen.
quelle
Ich habe diese einfache Funktion für mich selbst geschrieben:
Zum Beispiel haben Sie eine Liste von Autos:
quelle
Nehmen wir an, wir müssen eine Liste von Objekten in aufsteigender Reihenfolge nach einer bestimmten Eigenschaft sortieren. In diesem Beispiel müssen wir nach der Eigenschaft "name" sortieren. Nachfolgend finden Sie den erforderlichen Code:
quelle
Mit den ES6-Pfeilfunktionen sieht es so aus:
Array.prototype.sort()
kann eine Komparatorfunktion akzeptieren (hier habe ich die Pfeilnotation verwendet, aber gewöhnliche Funktionen funktionieren genauso):Der obige Ansatz kopiert den Inhalt des Fahrzeugarrays in ein neues und sortiert es alphabetisch nach Markennamen. Ebenso können Sie eine andere Funktion übergeben:
Wenn es Ihnen nichts ausmacht, das ursprüngliche Array zu mutieren
cars.sort(comparatorFunction)
, reicht dies aus.quelle
Hier ist ein kurzes Beispiel, das Objekte erstellt und anordnet und numerisch oder alphabetisch sortiert:
quelle
Als Version der Cheeso-Lösung mit umgekehrter Sortierung habe ich auch die ternären Ausdrücke aus Gründen der Unklarheit entfernt (dies ist jedoch ein persönlicher Geschmack).
quelle
return !!reverse ? (a[prop] - b[prop]) * -1 : (a[prop] - b[prop]);
!
ist das auch in Ordnung:return reverse ? (a[prop] - b[prop]) * -1 : (a[prop] - b[prop]);
!!
Force-Typ-Zwang zu einem nativen booleschen Typ-Wert im Gegensatz zur "Falschheit" des JavaScript-Werts, der nicht unbedingt benötigt wird, aber zumindest für mich den Zweck klarstellt. Beachten Sie, dass , wenn Sie einen Wert zurückgeben mit!!
einem nativen Booleschen Typ ist wie bei einem „falsy“ Wert auf einen nativen Typ gegenüber, das das zu sagen isttypeof !!undefined
odertypeof !!null
usw. Rückkehr „boolean“ Beachten Sie, dass!!" "
isttrue
aber!!""
istfalse
(Raum, keinen Platz in der string) aber das wusstest du wahrscheinlich schon.