1. ホーム
  2. javascript

[解決済み] Javascriptのソート機能です。1番目でソートし、2番目でソートします。

2023-02-18 09:17:29

質問

ソートするオブジェクトの配列を持っています。各オブジェクトは2つのパラメータを持っています。強さ、名前

objects = []
object[0] = {strength: 3, name: "Leo"}
object[1] = {strength: 3, name: "Mike"}

最初にStrengthでソートし、次に名前のアルファベット順でソートしたいです。私は最初のパラメータでソートするために、次のコードを使用しています。次に2番目のパラメータでソートするにはどうすればよいですか?

function sortF(ob1,ob2) {
  if (ob1.strength > ob2.strength) {return 1}
  else if (ob1.strength < ob2.strength){return -1}
  return 0;
};

ご協力ありがとうございました。

(私が使用しているのは Array.sort() で、そこに渡されるソート比較関数として前述のsortFを使用しています)。

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

ソート関数を次のように拡張してください。

function sortF(ob1,ob2) {
    if (ob1.strength > ob2.strength) {
        return 1;
    } else if (ob1.strength < ob2.strength) { 
        return -1;
    }

    // Else go to the 2nd item
    if (ob1.name < ob2.name) { 
        return -1;
    } else if (ob1.name > ob2.name) {
        return 1
    } else { // nothing to split them
        return 0;
    }
}

A <> 文字列の比較 アルファベットの比較です。