ArraySortコールバックが配列を正しい順序で並べ替えていません

タスタイムズ

ColdFusionを使用して、「Price persq.ft」フィールドに基づいて多次元配列を高から低に並べ替えます。

それは生産中であり、テストで働いていました、しかし奇妙な、分類されていない結果をもたらしたケースが出てきました。また、CFDOCSサイトでコード使用してこれをArraySort実行したところ、同じ誤った並べ替え結果が得られました。

ご覧のとおり、結果は実際には並べ替えられていません。

これが私のコードです:

figures = [
   {name='carl',price='117.5'},
   {name='fen',price='116.4'},
   {name='joe',price='86.3'}
];

arraySort(figures, function (a, b){
   return compare(b.price, a.price);
});
writeDump(figures);

結果:

NAME    joe
PRICE   86.3

NAME    carl
PRICE   117.5

NAME    fen
PRICE   116.4

117.5、116.4、86.3の順序で並べ替える必要があります。

86.38で始まるので、他の部分よりも大きく見えるように並べ替えていると思いますか?また、引用符なしで試してみましたが、間違った結果も得られました。

cfdocs.orgでこれと同じコードを実行したところ、同じ間違った結果が得られました。

ソートパラメータまたはコールバックで何か間違ったことをしていますか?

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

SOS

ArraySortコールバック関数は、時刻「アレイの2つの要素を比較」、および以下のいずれかの値を返さなければなりません。

  • -1最初の要素が2番目の要素よりも小さい場合
  • 0最初の要素が2番目の要素と等しい場合
  • 1最初の要素が2番目の要素より大きい場合

一方で比較()関数がリターンを行い10または-1、それは同様の要素を比較文字列、数値の期待順序を生成するつもりはありません、。Shawnが提案したように、デバッグコードを追加すると、各比較の結果が表示されます。

arraySort(figures, function (a, b){

       local.num = compare(a.price, b.price);
       local.text = local.num == -1 ? " less than " : (local.num == 0 ? " equals " : " greater than");
       writeOutput("<br> "& a.price &" "& local.text &" "& b.price &" => "& local.num );

       return local.num ;
});

..文字列の比較では、数値の比較と同じ結果が得られないことを示しています。

  • 116.4117.5未満=>-1
  • 116.4より大きい86.3 => 1
  • 117.5より大きい86.3 => 1
  • 1117.3117.5未満=>-1
  • 1117.3116.4未満=>-1

「価格」値を数値としてソートするには、compare()の代わりに算術演算子使用します以下のための下降順(低いものから高いものへ):

arraySort(figures, function (a, b){
   return (b.price < a.price) ? -1 : (b.price == a.price ? 0 : 1);
});

昇順順序(低〜高)、単に比較を入れ替えます:

arraySort(figures, function (a, b){
   return (a.price < b.price) ? -1 : (a.price == b.price ? 0 : 1);
});

実行可能な例

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Javascriptアンダースコアを使用して、別の配列順序に基づいて配列順序を並べ替えます

分類Dev

w3.jsでテーブルを並べ替えようとしていますが、数値が正しく並べ替えられていません

分類Dev

DataTables:数値データで並べ替え-順序が機能していませんか?

分類Dev

配列を並べ替えると、配列の順序が狂ってしまいます

分類Dev

間隔を正しい順序で並べ替えます

分類Dev

2つのプロパティを使用してオブジェクトの配列を並べ替えるが、条件に応じて並べ替え順序で条件付きでグループ化するにはどうすればよいですか?

分類Dev

オブジェクトの配列をキーで並べ替えてから、他のキーを並べ替えられた順序で新しい配列にプッシュするにはどうすればよいですか?

分類Dev

並べ替え、ドラッグ、注文可能なテーブル+ MVCが順序を正しく更新しない

分類Dev

2次元配列の並べ替えが正しい順序で並べ替えられない

分類Dev

2つのコレクションを組み合わせ、並べ替え順序を保持してから、千鳥配列で表示します

分類Dev

Pythonで曜日を正しい順序で並べ替える

分類Dev

JavaScript:関数は、コールバック関数の結果に基づいて並べ替えられた配列を返します

分類Dev

画像を正しい順序で並べ替える

分類Dev

配列の順序を使用してこのコレクションを並べ替えるにはどうすればよいですか?

分類Dev

2つの配列が同じ内容であるかどうかを確認し、順序を無視し、並べ替えを行いません。最も効率的なアルゴリズムは何ですか

分類Dev

配列をアルファベット順に並べ替えることができません

分類Dev

配列を逆の順序で並べ替える-逆にしない

分類Dev

Javascriptの並べ替えコールバックがすべてのブラウザで機能しない

分類Dev

sortOn():配列のコピーを並べ替えようとしていますが、元の配列も並べ替えられています

分類Dev

2つの配列をマージして降順で並べ替えようとしています

分類Dev

2つの並べ替えられた配列をマージしようとしていますが、java.lang.ArrayIndexOutOfBoundsException:5が理由を理解できません

分類Dev

配列を並べ替えたいのですが、できませんか?

分類Dev

別の配列に基づいて複数の配列を並べ替える並べ替え順序

分類Dev

別の配列の並べ替え順序に基づいて配列を並べ替える

分類Dev

オブジェクトの配列をフィールドで並べ替えてからアルファベット順に並べ替えます

分類Dev

MavenとJenkinsはクラスパスをアルファベット順に並べ替えますが、ローカルでは並べ替えません

分類Dev

配列を降順ではない順序で並べ替えるユーザー定義関数を開発します

分類Dev

行を並べ替えて、同じ並べ替え順序でグループ化します

分類Dev

Goはスライスを正しく並べ替えますが、配列を並べ替えません

Related 関連記事

  1. 1

    Javascriptアンダースコアを使用して、別の配列順序に基づいて配列順序を並べ替えます

  2. 2

    w3.jsでテーブルを並べ替えようとしていますが、数値が正しく並べ替えられていません

  3. 3

    DataTables:数値データで並べ替え-順序が機能していませんか?

  4. 4

    配列を並べ替えると、配列の順序が狂ってしまいます

  5. 5

    間隔を正しい順序で並べ替えます

  6. 6

    2つのプロパティを使用してオブジェクトの配列を並べ替えるが、条件に応じて並べ替え順序で条件付きでグループ化するにはどうすればよいですか?

  7. 7

    オブジェクトの配列をキーで並べ替えてから、他のキーを並べ替えられた順序で新しい配列にプッシュするにはどうすればよいですか?

  8. 8

    並べ替え、ドラッグ、注文可能なテーブル+ MVCが順序を正しく更新しない

  9. 9

    2次元配列の並べ替えが正しい順序で並べ替えられない

  10. 10

    2つのコレクションを組み合わせ、並べ替え順序を保持してから、千鳥配列で表示します

  11. 11

    Pythonで曜日を正しい順序で並べ替える

  12. 12

    JavaScript:関数は、コールバック関数の結果に基づいて並べ替えられた配列を返します

  13. 13

    画像を正しい順序で並べ替える

  14. 14

    配列の順序を使用してこのコレクションを並べ替えるにはどうすればよいですか?

  15. 15

    2つの配列が同じ内容であるかどうかを確認し、順序を無視し、並べ替えを行いません。最も効率的なアルゴリズムは何ですか

  16. 16

    配列をアルファベット順に並べ替えることができません

  17. 17

    配列を逆の順序で並べ替える-逆にしない

  18. 18

    Javascriptの並べ替えコールバックがすべてのブラウザで機能しない

  19. 19

    sortOn():配列のコピーを並べ替えようとしていますが、元の配列も並べ替えられています

  20. 20

    2つの配列をマージして降順で並べ替えようとしています

  21. 21

    2つの並べ替えられた配列をマージしようとしていますが、java.lang.ArrayIndexOutOfBoundsException:5が理由を理解できません

  22. 22

    配列を並べ替えたいのですが、できませんか?

  23. 23

    別の配列に基づいて複数の配列を並べ替える並べ替え順序

  24. 24

    別の配列の並べ替え順序に基づいて配列を並べ替える

  25. 25

    オブジェクトの配列をフィールドで並べ替えてからアルファベット順に並べ替えます

  26. 26

    MavenとJenkinsはクラスパスをアルファベット順に並べ替えますが、ローカルでは並べ替えません

  27. 27

    配列を降順ではない順序で並べ替えるユーザー定義関数を開発します

  28. 28

    行を並べ替えて、同じ並べ替え順序でグループ化します

  29. 29

    Goはスライスを正しく並べ替えますが、配列を並べ替えません

ホットタグ

アーカイブ