Zurück   Flashforum > Alternative Technologien > JavaScript & jQuery

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 21-04-2010, 17:52   #1 (permalink)
mcm-web
 
Benutzerbild von deak
 
Registriert seit: Jun 2002
Ort: Germany
Beiträge: 945
Array anhand eines anderen Arrays sortieren

Hallo,
weiss jemand wie ich einen Array anhand eines anderen sortieren kann?

Ich habe zwei gleich lange Arrays:
Bsp.:

HTML-Code:
meineDivs = new Array ('div_1','div_2','div_3','div_4');
meineNamen = new Array ('Zora','Anna','Eva','Susi');
So, jetzt sortiere ich den Array meineNamen über sort().
Hat jemand eine Idee wie ich es hinbekomme das nun die Elemente von meineDivs an der gleichen Stelle stehen:

So sollte es dann aussehen

HTML-Code:
('Anna','Eva','Susi','Zora');
('div_2','div_3','div_4','div_1');
Hoffe ich konnte das Problem darstellen.
__________________
da weisste bescheid, schätzelein!!!!
deak ist offline   Mit Zitat antworten
Alt 21-04-2010, 19:44   #2 (permalink)
Neuer User
 
Benutzerbild von andrelehnert
 
Registriert seit: Oct 2007
Ort: Kölle
Beiträge: 1.231
Mehrdimensionales Array:
PHP-Code:
meinArray = new Array (new Array('Zora','div_1'),new Array('Anna','div_2'), new Array('Eva','div_3'), new Array('Susi','div_4') );

trace("Unsortiert: \n"+meinArray);

meinArray.sort();

trace("Sortiert: \n"+meinArray); 
LG André
__________________
Die Hoffnung stirbt zuletzt.
Aber sie stirbt.
andrelehnert ist offline   Mit Zitat antworten
Alt 21-04-2010, 20:31   #3 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.868
du brauchst definitiv ein mehrdimensionales Array.
meinArray.sort(); sortiert immer nach der ersten Spalte.

die Funktion unten sortiert nach einer beliebigen Spalte.
Code:
function sortByColumn(array, column){
	function sortBy(a, b){
		if(a[column] == b[column]) return 0;
		return (a[column] > b[column]? 1: -1);
	}
	array.sort(sortBy);
}

sortByColumn(meinArray, 1);
thomas
thomas_E ist offline   Mit Zitat antworten
Alt 22-04-2010, 10:07   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.326
du brauchst definitiv ganichts extra (obwohl ich das natürlich auch anders als ausgerechnet so machen würde).
Code:
meineDivs = ['div_1','div_2','div_3','div_4'];
meineNamen = ['Zora','Anna','Eva','Susi'];

index = meineNamen.sort(Array.RETURNINDEXEDARRAY);
for (i=0; i<index.length; i++) {
	j = index[i];
	trace(i+":"+meineNamen[j]+" "+meineDivs[j]);
}
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 22-04-2010, 12:16   #5 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.868
Zitat:
Zitat von hgseib Beitrag anzeigen
Code:
meineDivs = ['div_1','div_2','div_3','div_4'];
meineNamen = ['Zora','Anna','Eva','Susi'];

index = meineNamen.sort(Array.RETURNINDEXEDARRAY);
for (i=0; i<index.length; i++) {
	j = index[i];
	trace(i+":"+meineNamen[j]+" "+meineDivs[j]);
}
sry hgseib, Javascript nicht Actionscript.
Da gibbet nichts vergleichbares zu Array.RETURNINDEXEDARRAY
und ohne klappt der Ansatz nicht. Schön wäre es ja gewesen

Thomas

Geändert von thomas_E (22-04-2010 um 12:17 Uhr)
thomas_E ist offline   Mit Zitat antworten
Alt 22-04-2010, 12:53   #6 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.326
oops, wie peinlich ;-)
naja, da muss ich doch schnell einen ersatz beizaubern:
grundsätzlich so wie deine lösung, nur das man einen index sortiert, anstatt die originaldaten
Code:
<html>
<body>
<script>
function indexSort (a, b) {
  return meineNamen[a]>meineNamen[b];
}
var meineDivs = new Array ('div_1','div_2','div_3','div_4');
var meineNamen = new Array ('Zora','Anna','Eva','Susi');
var index = new Array(0,1,2,3);
index.sort(indexSort);
alert(index);
</script>
</body>
</html>
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (22-04-2010 um 12:55 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 22-04-2010, 13:29   #7 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.868
Post

stimmt, so gehts. den Ansatz muss ich mir merken.
is besser als die Ordnung der Arrays durcheinanderzubringen.

nur ich würde meine Daten immernoch in einem mehrdimensionalem Array speichern bzw. Array mit Objekten drin

sowas halt:
Code:
var daten = [
	{index: 0, name: "Zora", div:"div_1"},
	{index: 1, name: "Anna", div:"div_2"},
	{index: 2, name: "Eva", div:"div_3"},
	{index: 3, name: "Susi", div:"div_4"},
];
dann bleibt zusammen, was zusammengehört
__________________
greetz Thomas

plz RTFM & Coding Conventions
thomas_E ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Arrays nach "Muster Array" sortieren deak Flash CS3 Professional 2 20-06-2009 16:47
Sortieren eines mehrdimensionalen Arrays weis-nix PHP und MySQL 4 08-01-2009 10:42
Kann man das Ergebnis eines Array.sort() auf verschiedene Arrays anwenden? Steril707 ActionScript 3 5 28-02-2008 11:06
arrays erstellen und sortieren nach array inhalt modul47 ActionScript 1 21 02-10-2006 12:58
Anzahl der Elemente eines Arrays ? also nicht nur den letzten index -> array.length Dr. Gonzo ActionScript 1 6 06-04-2004 14:40


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:59 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele