2016-12-05 2 views
-1

JavaScriptで自然にソートされた多次元配列を得るためのソリューションを探しています。多次元配列を並べ替えるソートや自然にソートするソリューションがいくつか見つかりましたが、どちらの解決策も見つけられませんでした。多次元配列での自然なソート

私はまた、ソリューションを組み合わせることはできません。あなたは配列がservernames、IPアドレスとMACアドレスが含まれて見ることができるように

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'} 
]; 

:ここ は、配列がどのように見えるかです。この配列に書き込まれたテーブルの内容です。 テーブルをソートするには、この配列をソートします。

これをどのように処理するかについて賢明な考えがありますか?

ありがとうございました。

編集:OK多分、もっと具体的にする必要があります: 多次元配列をソートするのに問題はありません。私はMAC、IPまたは名前のためにこの配列を並べ替えることができます。それは単純な1行のコードです。 問題は自然に並べ替えることです。サーバー名またはIPなどの英数字の文字列を持っているWheneあなたは例のリストをソートしたい:このような

{a3, a12, a100, a1} 

{a1, a3, a12, a100} 

これは自然なソートと呼ばれています。 「通常は」ではなく、ソートは次のようになります。

{a1, a100, a12, a3} 

私は自然にソートするためのいくつかのALGOSを見つけましたが、私はmultidimenional配列をソートするためにそれらを準備することができませんでした。

+2

例を挙げておけば、私は数分以内に重複した回答や多くの回答を得ることができます。 – Redu

+1

配列の例を挙げるとよいでしょう:) – George

+0

[2次元配列を列値で並べ替える方法は?](http://stackoverflow.com/questions/16096872/how-to-sort-2-次元の配列ごとの値) – Liam

答えて

0

IPアドレス以外のプロパティに従ってソートするのは簡単です。 IPアドレスに従ってソートする場合は、次のようにします。

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);

、プロパティの優先順位で並べ替えしたい場合、その後many answersは、あなたがこれを適用することができるようにしてあります。

+0

ありがとうございますが、これは役に立ちません。私は、元の投稿でもう少し私の要求を指定しました。 –