如何在多个列上对数组进行排序?

2022-08-30 04:09:32

我有一个多维数组。主阵列是

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

我试图做的是按 排序数组,然后按 排序。我知道在JavaScript中你有,你可以把一个自定义函数放进去,在我的情况下,我有:owner_namepublication_nameArray.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,但是我如何将其修改为排序为 ,然后呢?owner_namepublication_name


答案 1

如果所有者名称不同,请按名称排序。否则,请使用发布名称作为仲裁程序。

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;
}

答案 2

我想你要找的是那么.js:https://github.com/Teun/thenBy.js

它允许您使用标准的 Array.sort,但具有 style。firstBy().thenBy().thenBy()

这里可以看到一个例子