NEWS
[gelöst]: array sortieren nach 2 werten
-
ich habe ein array, welches nach 2 werten sortiert werden soll - die funktion dazu ist
hat jmd eine idee dazu? evtl. @paul53 vielleicht hast du nochmal lust mir schon wieder zu helfenif (sortList==1) { myArr.sort( function(a, b) { if (a[5] === b[5]) { // hier wird nach zahlen sortiert return b[4] - a[4]; } return a[5] > b[5] ? 1 : -1; }); } else { myArr.sort( function(a, b) { if (a[5] === b[5]) { // hier werden strings sortiert return b[0].toUpperCase() - a[0].toUpperCase(); } return a[5] > b[5] ? 1 : -1; }); }im ersten block (sortlist=1) sind die werte für b[4] - a[4] zahlen - da funktioniert es
im 2ten block sind b[0] - a[0] strings - da funktioniert es nicht
da ich das ganze aus github kopiert habe, weiß ich leider nicht, wie ich den 2ten block ändern muss, damit mit strings sortiert werden kannbeispiel erster block - das datum ist richtig sortiert - in der tabelle sieht man die werte arr[5] nicht - das sind die gelben überschriften

im 2ten block soll nach der ersten spalte sortiert werden
-
ich habe ein array, welches nach 2 werten sortiert werden soll - die funktion dazu ist
hat jmd eine idee dazu? evtl. @paul53 vielleicht hast du nochmal lust mir schon wieder zu helfenif (sortList==1) { myArr.sort( function(a, b) { if (a[5] === b[5]) { // hier wird nach zahlen sortiert return b[4] - a[4]; } return a[5] > b[5] ? 1 : -1; }); } else { myArr.sort( function(a, b) { if (a[5] === b[5]) { // hier werden strings sortiert return b[0].toUpperCase() - a[0].toUpperCase(); } return a[5] > b[5] ? 1 : -1; }); }im ersten block (sortlist=1) sind die werte für b[4] - a[4] zahlen - da funktioniert es
im 2ten block sind b[0] - a[0] strings - da funktioniert es nicht
da ich das ganze aus github kopiert habe, weiß ich leider nicht, wie ich den 2ten block ändern muss, damit mit strings sortiert werden kannbeispiel erster block - das datum ist richtig sortiert - in der tabelle sieht man die werte arr[5] nicht - das sind die gelben überschriften

im 2ten block soll nach der ersten spalte sortiert werden
@liv-in-sky
String-Vergleiche funktionieren nur, wenn die Strings gleich lang sind, also die Werte führende 0 enthalten.
Tipp: Wandle in der Funktion erst a[5] und b[5] in Zahlen (Minuten).@liv-in-sky sagte in frage: array sortieren nach 2 werten:
return b[0].toUpperCase() - a[0].toUpperCase();Was soll eine Substraktion von Strings ergeben ?
return a[0].toUpperCase() > b[0].toUpperCase() ? 1 : -1; -
ich habe ein array, welches nach 2 werten sortiert werden soll - die funktion dazu ist
hat jmd eine idee dazu? evtl. @paul53 vielleicht hast du nochmal lust mir schon wieder zu helfenif (sortList==1) { myArr.sort( function(a, b) { if (a[5] === b[5]) { // hier wird nach zahlen sortiert return b[4] - a[4]; } return a[5] > b[5] ? 1 : -1; }); } else { myArr.sort( function(a, b) { if (a[5] === b[5]) { // hier werden strings sortiert return b[0].toUpperCase() - a[0].toUpperCase(); } return a[5] > b[5] ? 1 : -1; }); }im ersten block (sortlist=1) sind die werte für b[4] - a[4] zahlen - da funktioniert es
im 2ten block sind b[0] - a[0] strings - da funktioniert es nicht
da ich das ganze aus github kopiert habe, weiß ich leider nicht, wie ich den 2ten block ändern muss, damit mit strings sortiert werden kannbeispiel erster block - das datum ist richtig sortiert - in der tabelle sieht man die werte arr[5] nicht - das sind die gelben überschriften

im 2ten block soll nach der ersten spalte sortiert werden
@liv-in-sky Vielleicht hilf das kleine Beispiel
//https://stackoverflow.com/questions/4340227/sort-mixed-alpha-numeric-array var reA = /[^a-zA-Z]/g; var reN = /[^0-9]/g; function sortAlphaNum(a, b) { var aA = a.replace(reA, ""); var bA = b.replace(reA, ""); if (aA === bA) { var aN = parseInt(a.replace(reN, ""), 10); var bN = parseInt(b.replace(reN, ""), 10); return aN === bN ? 0 : aN > bN ? 1 : -1; } else { return aA > bA ? 1 : -1; } } console.log( ["A1", "A10", "A11", "A12", "A2", "A3", "A4", "B10", "B2", "F1", "F12", "F3"].sort(sortAlphaNum) ) -
@liv-in-sky
String-Vergleiche funktionieren nur, wenn die Strings gleich lang sind, also die Werte führende 0 enthalten.
Tipp: Wandle in der Funktion erst a[5] und b[5] in Zahlen (Minuten).@liv-in-sky sagte in frage: array sortieren nach 2 werten:
return b[0].toUpperCase() - a[0].toUpperCase();Was soll eine Substraktion von Strings ergeben ?
return a[0].toUpperCase() > b[0].toUpperCase() ? 1 : -1;@paul53 (mein problem war ja, das es keinen sinn macht, das strings von einander abgezogen werden :-) ) genau dafür habe ich ersatz gesucht
@fastfoot (ds beispiel funktioniert nur, wenn keine leerzeichen vorhanden sind und mind. eine zahl im text steht - sonst macht parseInt ein "NAN" ergebnis - bei mir soll es nur um alphabeitisch sortierung gehen)
danke für eure inputs - hat etwas gedauert habe aber dadurch eine lösung gefunden

myArr.sort( function(a, b) { var aA = a[5]//.replace(reA, ""); var bA = b[5]//.replace(reA, ""); if (aA === bA) { return a[0].toLowerCase().localeCompare(b[0].toLowerCase()); } });
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden