1

JSON:

[
   { score: 0.648 },
   { score: 0.945 }
]

Javascript:

_.sortBy(array, function(obj){ return obj.score });

ただし、これは元の配列のコピーのみを返します。何も変わっていません。配列をスコアで降順にソートしたい。それを行う方法はありますか?

4

1 に答える 1

2

降順で並べ替えたい場合は、スコアを補完します。

_.sortBy(array, function(obj) { return -obj.score; });

一般的な配列の並べ替えでは、アンダースコアの世界以外では、ネイティブ.sort()の JavaScript Array プロトタイプを使用できます。配列の 2 つの実際の要素をパラメーターとして取り、2 つの要素間の順序関係に応じて、ゼロより小さい、等しい、または大きい数値を返す必要があります。

あなたの場合、それは次のようになります:

array.sort(function(o1, o2) {
  return -(o1.score - o2.score); // or just return o2.score - o1.score if you like
}

このスキームは、ソート メカニズムによって完全な制御が可能であり、前提条件がないため、はるかに柔軟です (比較関数が一貫していること以外は、一貫していない場合、奇妙な動作が発生します)。

于 2013-11-12T19:37:59.777 に答える