2017-05-17 11 views
1

ここに配列があり、ソートしようとしています。しかし、期待どおりに動作していません。降順で名前をソートしたいのですがどうすればいいですか?ここでJquery配列のソートが期待どおりに機能しない

var d = '{"success":"1","message":[{"_id":"591b39df358f1d1f843231d1","area":"chennai","food":"idly","name":"saravana bavan","__v":0},{"_id":"591b39e0358f1d1f843231d2","area":"Dindigul","food":"Dosa","name":"Kattu Briyani","__v":0},{"_id":"591b39df358f1d1f843231d4","area":"Tirupur","food":"Poori","name":"French Loaf","__v":0}]}'; 
 
console.log(d); 
 
var results = jQuery.parseJSON(d); 
 
console.log(results.message); 
 
results.message.sort(function(a, b) { 
 
    return b.name- a.name; 
 
}); 
 
console.log(results.message);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

あなたは、文字列では、数学的な演算を実行することはできません私のFiddle

+0

をごSO使用してデモを持つことができます '<>' – guradio

+3

あなたは降順の名前をソートしたい場合は、なぜあなたは地域によってソートされます! – Bergi

+0

@Bergi、それはそれに応じてそれを変更して、オタクです申し訳ありません –

答えて

0

です。

results.message.sort(function(a, b) { 
    if (b.name > a.name) { return 1 } 
    else if (b.name < a.name) { return -1 } 
    else { return 0 } 
}); 

下記のコメントに@bergiが記載されています。 Thisは問題点を深く説明しています。

+1

それはちょうど私またはこの回答は@Bergiによって与えられたリンクからです – guradio

+0

ちょうどチェックしました。基本的に同じことですが、実際にこれを行う別の方法はありません。私は私の答えにリンクを追加します。 –

+0

'return b.name.localeCompare(a.name)'について – Phil

-1

次のようにちょうどあなたの比較関数を変更します。

var d = '{"success":"1","message":[{"_id":"591b39df358f1d1f843231d1","area":"chennai","food":"idly","name":"saravana bavan","__v":0},{"_id":"591b39e0358f1d1f843231d2","area":"Dindigul","food":"Dosa","name":"Kattu Briyani","__v":0},{"_id":"591b39df358f1d1f843231d4","area":"Tirupur","food":"Poori","name":"French Loaf","__v":0}]}'; 
console.log(d); 
var results = jQuery.parseJSON(d); 
console.log(results.message); 
results.message.sort(function(a, b) { 
    return b.name.toLowerCase() > a.name.toLowerCase() ? 1 : -1; 
}); 
console.log(results.message); 
+0

[適切なときに '0'を返すことを忘れないでください!](http://stackoverflow.com/a/20892652/1048572) – Bergi

+0

@Bergiそれは遅くなるはずですか?しかし、私はちょうど興味があります、誰かがそれをベンチマークしてもらえますか? '余分なif'文と比較して 'スワップ'はどれくらい遅いですか? – am05mhz

+0

正確さが損なわれている場合、私はスピードを気にしません。 '0'を返さないと、ソートされた配列の値が重複しても機能しません。 – Bergi

関連する問題