1. ホーム
  2. javascript

[解決済み] 複数の列で配列を並べ替えるには?

2022-06-06 14:52:38

質問

多次元配列があります。主配列は

[publicationID][publication_name][ownderID][owner_name] 

私が行おうとしているのは、配列のソートを owner_name でソートし、次に publication_name . JavaScriptでは Array.sort() に、カスタム関数を置くことができ、私の場合、私は持っています。

function mysortfunction(a, b) {
    var x = a[3].toLowerCase();
    var y = b[3].toLowerCase();

    return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}

owner_nameという1つのカラムでソートする分には問題ないのですが、どのように修正すれば owner_name でソートするようにするにはどうしたらよいでしょうか。 publication_name ?

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

所有者名が異なる場合は、所有者名でソートします。そうでない場合は、出版物名をタイブレークに使用します。

function mysortfunction(a, b) {

  var o1 = a[3].toLowerCase();
  var o2 = b[3].toLowerCase();

  var p1 = a[1].toLowerCase();
  var p2 = b[1].toLowerCase();

  if (o1 < o2) return -1;
  if (o1 > o2) return 1;
  if (p1 < p2) return -1;
  if (p1 > p2) return 1;
  return 0;
}