2016-12-05 4 views
-1

Ich suche nach einer Lösung, um mehrdimensionale Arrays natürlich mit JavaScript sortiert zu bekommen. Ich fand einige Lösungen, die mehrdimensionale Arrays sortieren oder natürlich sortieren, aber ich fand keine Lösung für beide Anforderungen.Natürliche Sortierung in mehrdimensionalen Arrays

Ich kann auch nicht die Lösungen kombinieren. hier ist das, was das Array wie folgt aussieht:

var content = [ 
{0: 'somename', 1: '10.1.1.100', 2: 'aa-bb-cc-dd-ee-ff'}, 
{0: 'someothername', 1: '10.1.1.12', 2: '11-22-33-44-55-66'} 
]; 

Wie Sie das Array enthält Servernamen sehen können, IP-Adressen und MAC-Adressen. Es ist ein gewisser Tabelleninhalt in diesem Array geschrieben. Um die Tabelle zu sortieren, möchte ich dieses Array sortieren.

Haben Sie eine clevere Idee, wie Sie damit umgehen?

Vielen Dank für Ihre Hilfe.

edit: OK vielleicht, ich muss konkreter sein: Es gibt kein Problem, ein mehrdimensionales Array zu sortieren. Ich bin in der Lage, dieses Array für MAC, IP oder Name zu sortieren. Es ist ein einfacher einzeiliger Code. Das Problem ist, sie natürlich zu sortieren. Whene Sie alphanumerical Strings wie Servernamen oder IP haben Sie die Beispielliste sortieren:

{a3, a12, a100, a1} 

wie folgt aus:

{a1, a3, a12, a100} 

Diese natürliche Sortierung genannt wird. Die „normale“ Sortierung sieht stattdessen wie folgt aus:

{a1, a100, a12, a3} 

ich mehrere algos gefunden natürlich für die Sortierung, aber ich war nicht in der Lage, sie bereiten ein multidimenional Array zu sortieren.

+2

Wenn Sie einen Beispielfall angeben, bin ich mir ziemlich sicher, dass Sie innerhalb von Minuten entweder eine doppelte Antwort oder viele Antworten erhalten werden. – Redu

+1

Wäre gut, ein Beispiel für Ihr Array zu geben :) – George

+0

Mögliche Duplikate von [Wie 2-dimensionalen Array nach Spaltenwert sortieren?] (Http://stackoverflow.com/questions/16096872/how-to-sort-2- Dimensional-Array-by-Column-Wert) – Liam

Antwort

0

Es scheint trivial, nach den Eigenschaften anders als die IP-Adresse zu sortieren. Wenn Sie nach den IP-Adressen sortieren möchten, gehen Sie wie folgt vor;

var ipads = ["192.168.1.1", "192.168.0.1", "10.10.1.1", "178.16.62.42", "42.14.1.1", "42.15.1.1", "178.16.61.42", "192.168.1.2", "0.255.255.255","9.255.255.255","10.0.0.1"], 
 
    result = ipads.map(a => a.split(".")) 
 
       .sort((a,b) => (a[0]-b[0])*16777216 + (a[1]-b[1])*65536 + (a[2]-b[2])*256 + a[3]-b[3]) 
 
       .map(e => e.join(".")); 
 
console.log(result);

Wenn Sie mit Priorität der Eigenschaften mögen es many answers in SO dann sortieren, dass Sie diese anwenden können.

+0

Danke, aber das hilft nicht. Ich habe meine Anfrage im ursprünglichen Beitrag etwas genauer spezifiziert. –

Verwandte Themen