1. ホーム
  2. javascript

[解決済み] 配列の各要素の長さを基準にソートするには?

2022-08-31 05:47:52

質問

このような配列があります。

arr = []
arr[0] = "ab"
arr[1] = "abcdefgh"
arr[2] = "abcd"

ソート後の出力配列は

arr[0] = "abcdefgh"
arr[1] = "abcd"
arr[2] = "ab"  

私は descending の順で各要素の長さを指定します。

どのように解決するのですか?

あなたは Array.sort メソッドを使って配列を並べ替えることができます。文字列の長さをソートの基準とするソート関数は、以下のように使用することができます。

arr.sort(function(a, b){
  // ASC  -> a.length - b.length
  // DESC -> b.length - a.length
  return b.length - a.length;
});


注意:ソート ["a", "b", "c"] を文字列の長さでソートすると ["a", "b", "c"] . というのは の仕様では :

<ブロッククオート

ソートは必ずしも安定ではありません。 は必ずしも元の順序のままとは限りません)。

目的が長さによるソートである場合、辞書順で追加の基準を指定する必要があります。

["c", "a", "b"].sort(function(a, b) {
  return a.length - b.length || // sort by length, if equal then
         a.localeCompare(b);    // sort by dictionary order
});