Gunnar Bittersmann: Sortierung nach bestimmten Muster

Beitrag lesen

@@Romero:

nuqneH

  	out.sort( sort );  

Ich glaube nicht, dass es eine gute Idee ist, die Funktion wie die Methode "sort" zu benennen. Sie kann auch durchaus anonym bleiben:

out.sort(function (a, b) {});

Geht es über substr.( ??,??), so dass ich sage, dass er den kleinen Buchstaben als Kennung nehmen soll?

Ja, aber du nur ein Zeichen (das 18. von 0 beginnend) haben willst, tut es auch [ref:self812;javascript/objekte/string.htm#char_at@title=charAt](18).

Wenn das 18. Zeichen von zwei Strings unterschiedlich ist, sortierst du nach ebendiesem in umgekehrter Reihenfolge (s vor k vor b). Wenn zwei Strings im 18. Zeichen übereinstimmen, sortierst du sie alphanumerisch:

out.sort(function (a, b)  
{  
  if (a.charAt(18) == b.charAt(18)) return (a > b);  
  else return (a.charAt(18) < b.charAt(18));  
});

Oder http://de.selfhtml.org/javascript/sprache/bedingt.htm#entweder_oder@title=kürzer geschrieben:

out.sort(function (a, b)  
{  
  return (a.charAt(18) == b.charAt(18)) ? (a > b) : (a.charAt(18) < b.charAt(18));  
});

Zweimal a.charAt(18) und b.charAt(18) ist natürlich nicht elegant. Und auch bei Verwendung von [ref:self812;javascript/objekte/string.htm#char_code_at@title=charCodeAt]() und ||-Operator auch nicht nötig:

out.sort(function (a, b)  
{  
  return b.charCodeAt(18) - a.charCodeAt(18) || a > b;  
});

Qapla'

--
Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
(Mark Twain)