2016-07-18 10 views
-4

は、私は、Array持っている:JQUERYでcharecterで始まらない配列の配列リストの並び替え/並べ替え方法は?

data =["c3.2xlarge","c3.4xlarge","c3.large"]; 

data= [ "c3.4xLarge", "c3.2xLarge", "c3.8xLarge", "c3.Large", 
     "d3.4xLarge", "d3.2xLarge", "d3.8xLarge", "d3.Large", 
     "t2.4xLarge", "t2.2xLarge", "t2.8xLarge", "t2.Large" 
     ]; 

それが今、アルファベットやソートのですが、私たちは本当にc3.largeが最初に表示したいときには、私たちを提供します。出力 = [ "c3.Large"、 "c3.2xLarge"、 "c3.4xLarge"、 "c3.8xLarge"、 "d3.Large"、 "d3.2xLarge"、「D3を期待

。 「t2.2xLarge」、「t2.4xLarge」、「t2.8xLarge」 ]、「t2.4xLarge」、「t2.4xLarge」、「t2.4xLarge」、

このようなオブジェクトを並べ替える関数を作成するにはどうすればよいですか?

+3

を助けるかもしれないあなたがそれらをソートしたいどのように、あなたはどのような出力を 希望を期待していますか? –

+0

こんにちは、ようこそ、私たちが助けることができるようにあなたのコードの試行を提供してください。人々は、努力の証拠なしにあなたをコーディングすることはめったにありません。デビッド氏によれば、 には、期待される出力も含まれています。 – Visualife

+0

data = ["c3.4xLarge"、 "c3.2xLarge"、 "c3.8xLarge"、 "c3.Large"、 "d3.4xLarge"、 "d3.2xLarge"、 "d3.8xLarge"、 "d3.Large "、" t2.4xLarge "、" t2.2xLarge "、" t2.8xLarge "、" t2.Large " 期待される出力:["c3.Large"、 "c3.2xLarge"、 "c3.4xLarge"、 "c3.8xLarge"、 "d3.Large"、 "d3.2xLarge"、 "d3.4xLarge"、 "d3 「t2.Large」、「t2.2xLarge」、「t2.4xLarge」、「t2.8xLarge」]; – Mastikhor

答えて

0

js配列のソート方法を書き換えます。これは

var data = ["c3.2xlarge","c3.4xlarge","c3.large"]; 
 
    console.log(data.sort(function (a,b) { 
 
     var aSub = a.substring(3,4), 
 
     bSub = b.substring(3,4); 
 
    if(isNaN(aSub)){ 
 
     return -1; 
 
    } 
 
    else if(isNaN(bSub)){ 
 
     return 1; 
 
    } 
 
    else{ 
 
     return aSub > bSub ? 1:-1; 
 
    } 
 
}));

+0

ありがとう、カーティス、うまく動作します。 しかし、私は配列のように、 データ= [ "c3.4xLarge"、 "c3.2xLarge"、 "c3.8xLarge"、 "c3.Large"、 "d3.4xLarge"、 "d3.2xLarge" 「d3.8xLarge」、「d3.Large」、 「t2.4xLarge」、「t2.2xLarge」、「t2.8xLarge」、「t2.Large」、 ]; 期待出力: ["c3.Large"、 "c3.2xLarge"、 "c3.4xLarge"、 "c3.8xLarge"、 "d3.Large"、 "d3.2xLarge"、 "d3.4xLarge" 「d2.80x大」、「t2.4x大」、「t2.8x大」、 ]; その時は失敗です。 – Mastikhor

+0

これは、4番目の文字を確認する前に最初の文字を確認することを意味します。 –

0
var data = [ "c3.4xLarge", "c3.2xLarge", "c3.8xLarge", "c3.Large", "d3.4xLarge", "d3.2xLarge", "d3.8xLarge", "d3.Large", "t2.4xLarge", "t2.2xLarge", "t2.8xLarge", "t2.Large", ]; 


data.sort(function (a,b) { 
    var firA = a.substring(0,1), 
     firB = b.substring(0,1); 
     // console.log(firA); 
     // console.log(firB); 
    if(firA != firB){ 
     return firA >firB ? 1 : -1; 
    } 
    var aSub = a.substring(3,4), 
    bSub = b.substring(3,4); 
    if(isNaN(aSub)){ 
     return -1; 
    } 
    else if(isNaN(bSub)){ 
     return 1; 
    } 
    else{ 
     return aSub > bSub ? 1:-1; 
    } 
}) 
console.log(data); 
+0

完了...優秀。うまく動作します。おかげでChen。 – Mastikhor

+0

入力配列のちょっとした変更... このタイプの配列形式を持っています: data = [ Object {key = "c3.2xlarge"、id = 85}、 Object {key = "c3.4xlarge" id = 86}、 オブジェクト{key = "c3.xlarge"、id = 88}、 オブジェクト{key = "c3.large"、id = 83}、 オブジェクト{key = "c3.xlarge"、id = 84}、 オブジェクト{key = "c4.2xlarge"、id = 89}、 オブジェクト{key = "c4.4xlarge"、id = 91}、 オブジェクト{key = "c4.8xlarge"、id = 92} 、 オブジェクト{key = "c4.large"、id = 87}、 オブジェクト{key = "c4.xlarge"、id = 90}、 オブジェクト{key = "d2.2xlarge"、id = 104}、 オブジェクト{key = "d2.4xlarge"、id = 103}、 オブジェクト{key = "d2.8xlarge"、id = 105}、 オブジェクト{key = "d2.xlarge"、id = 102}]; – Mastikhor

+0

私はこのようにしようとしています:use a1.key、しかし出力は正しく来ません。 データ。ソート(関数(a1、b1){ var a = a1.key; ; var b = b1.key; ------- ------- -------- 戻り値; } – Mastikhor

関連する問題