JavaScript Objekte nach properties alphabetisch sortieren?

2 Antworten

Da meines Wissenstandes nach (der ziemlich eingerostet ist) ein Overload der Operatoren (also zum Beispiel von Equal-Operatoren) in JS nicht möglich ist, wird wohl kein Weg daran vorbei führen, mit einer Schleife über das Array zu iterieren und "eigenhändig" zu sortieren.

Vielleicht gibt es auch Bibliotheken, die sowas parametrisiert bereits umgesetzt haben.

Google doch einfach mal nach "Sortieralgorithmen". Wenn dich Informatik interessiert, ist das ein Thema, was dich später sowieso noch viel mehr beschäftigen wird.

Für konkrete Antworten auf dein spezifisches Problem (mit mehr Wissen über JS als ich es bieten kann), bist du hier wahrscheinlich auf der falschen Plattform :-)

Woher ich das weiß:Studium / Ausbildung

Dafür gibt es die Methode sort() in Javascript:

const cars = [
	{ brand: "VW" },
	{ brand: "BMW" },
	{ brand: "Opel" },
	{ brand: "Mercedes" }
];

console.log("Unsortiert", cars);

cars.sort((a,b) => {
	const c1 = a.brand.toLowerCase();
	const c2 = b.brand.toLowerCase();
	
	if (c1 < c2) {
		return -1;
	} else if (c1 > c2) {
		return 1;
	} else {
		return 0;
	}
});

console.log("Sortiert", cars);

Ausgabe

Unsortiert [
  { brand: 'VW' },
  { brand: 'BMW' },
  { brand: 'Opel' },
  { brand: 'Mercedes' }
]
Sortiert [
  { brand: 'BMW' },
  { brand: 'Mercedes' },
  { brand: 'Opel' },
  { brand: 'VW' }
]
Woher ich das weiß:Berufserfahrung – Entwickle Webseiten seit über 25 Jahren.
Babelfish  14.10.2023, 18:36

Ich sehe übrigens gerade, dass es mit localeCompare noch kürzer geht:

const cars = [
	{ brand: "VW" },
	{ brand: "BMW" },
	{ brand: "Opel" },
	{ brand: "Mercedes" }
];

console.log("Unsortiert", cars);

cars.sort((a,b) => a.brand.toLowerCase().localeCompare(b.brand.toLowerCase()) );

console.log("Sortiert", cars);
0