• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[GELÖST] getSortedKeyArray out of Object (associative array)

nrg_

New member
Hallo,

ich habe folgende Objektstruktur:

Code:
{key1:
	{subkey1 : value1,
	 subkey2 : value2,
	 subkey3 : value3},
 key2:
	{subkey4 : value4,
	 subkey5 : value5,
	 subkey6 : value6}
};

Ich hätte gerne die Keys (hier key1, key2) nach den Werten (hier valuex) eines bestimmten Sub-Keys (hier subkeyx) sortiert.

Meine aktuelle Lösung:
Code:
function getSortedKeyArray(object, sortValueKey) {
	var sortedKeys = [];
	for (var key in object) {
		sortedKeys.push({k : key, v : object[key][sortValueKey]});
	}
	sortedKeys.sort(function(a, b) {
		return a.v == b.v ? 0 : a.v < b.v ? -1 : 1;
	});
	for (var i = 0; i < sortedKeys.length; i++) {
		sortedKeys[i] = sortedKeys[i].k;
	}
	return sortedKeys;
}

Geht das leichter bzw. performanter?

Danke und Grüße
nrg

- - - Aktualisiert - - -

Vielleicht noch als Zusatz. Ich glaube nicht unbedingt, dass es sehr viel "leichter" geht. Mich stört an der Lösung nur, dass 2x über das Array iteriert wird, plus Sortierung.

mir geht es in erster Linie um Performance. Halbwegs transparent sollte das ganze trotzdem bleiben. Ich kann mir nur vorstellen, dass es mit einem eigenen Sortier-Algorithmus schneller geht... Aber das will ich mir nicht unbedingt ans Bein binden.
 
Zuletzt bearbeitet von einem Moderator:
Code:
function getSortedKeyArray(object, sortValueKey)
{
  return Object.keys(object).sort(function(x, y)
  {
    return object[x][sortValueKey] == object[y][sortValueKey] ? 0 : object[x][sortValueKey] < object[y][sortValueKey] ? -1 : 1;
  })
}
 
Wow, nicht schlecht ;). Auf die Lösung hätte man kommen können. Wobei es wahrscheinlich bzgl. Performance eher negativ skaliert.

Nach ein paar Tests muss ich auch sagen, dass die Performance bei meinem Einsatz dieser Funktion gar nicht so stark ins Gewicht fällt.

Danke für die Antwort. Thread ist erledigt.
 
Zurück
Oben