以下の例を試しましたが、現在は正しい情報で作業しています。
var fruits = [110.111, 1245.22222, 2.458, 0.001];
fruits.sort();
document.write(fruits);
結果 :
0.001,110.111,1245.22222,2.458
しかし、私はこのようなものが欲しい
0.001,2.458,110..111,1245.22222
このコードの何が問題なのですか?
以下の例を試しましたが、現在は正しい情報で作業しています。
var fruits = [110.111, 1245.22222, 2.458, 0.001];
fruits.sort();
document.write(fruits);
結果 :
0.001,110.111,1245.22222,2.458
しかし、私はこのようなものが欲しい
0.001,2.458,110..111,1245.22222
このコードの何が問題なのですか?
array.sort( [compareFunction] )は、カスタムコンパレータとして機能するオプションの関数を取ります
fruits.sort(function(a, b){
return a - b;
});
降順に並べ替えたい場合
fruits.sort(function(a, b){
return b - a;
});
経由: MDN Array.prototype.sort docs
compareFunction(a, b)
が 0 未満の場合、a を b よりも小さいインデックスに並べ替えます。つまり、a が最初になります。compareFunction(a, b)
、a と b は互いに変更されませんが、すべての異なる要素に関してソートされます。注: ECMAscript 標準はこの動作を保証していないため、すべてのブラウザー (たとえば、少なくとも 2003 年までさかのぼる Mozilla バージョン) がこれを尊重しているわけではありません。compareFunction(a, b)
が 0 より大きい場合、b を a よりも小さいインデックスに並べ替えます。compareFunction(a, b)
要素 a と b の特定のペアを 2 つの引数として指定すると、常に同じ値を返す必要があります。一貫性のない結果が返された場合、ソート順は未定義です最近、私はいくつかの関数型プログラミングを行っています。このセクションは、同じ問題を別の方法で解決したい人のための別の選択肢として残しておきます。
まず、いくつかの一般的なユーティリティ関数があります。asc
これらは、高次関数とdesc
ソート関数を定義するときに必要になります。
const sub = x => y => y - x;
const flip = f => x => y => f (y) (x);
const uncurry = f => (x,y) => f (x) (y);
const sort = f => xs => xs.sort(uncurry (f));
と を簡単に定義できるようにasc
なりdesc
ましたsub
const asc = sort (flip (sub));
const desc = sort (sub);
見てみな
asc ([4,3,1,2]); //=> [1,2,3,4]
desc ([4,3,1,2]); //=> [4,3,2,1]
あなたはまだ使用してカスタムソートを行うことができますsort (comparator) (someData)
// sort someData by `name` property in ascending order
sort ((a,b) => a.name - b.name) (someData); //=> ...
次のようなカスタムソート関数を使用できます。
fruits.sort(function (a,b) {return a - b;});
Array.sort()
メソッドは数値を文字列として扱い、メンバーを ASCII 順に並べます。
並べ替え関数を定義できます。
fruits.sort(function(a,b) {return a>b})