首页  >  文章  >  web前端  >  如何按多列对多维 JavaScript 数组进行排序?

如何按多列对多维 JavaScript 数组进行排序?

DDD
DDD原创
2024-10-28 23:18:30186浏览

How to Sort a Multidimensional JavaScript Array by Multiple Columns?

按多列对多维数组进行排序

在 JavaScript 中,可以使用 Array.sort() 函数轻松实现对字符串数组的排序。但是,对于多维数组,或者根据多个条件排序时,需要自定义函数。

考虑具有以下结构的数组:

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

目标是对数组进行排序按owner_name,然后按publication_name,这将导致具有相同名称的所有者被分组在一起,并且每个组中的出版物按字母顺序排序。

之前,引入了一个名为 mysortfunction 的自定义排序函数,该函数对数组进行排序基于单个列,owner_name。要扩展此函数以进行多列排序,可以进行以下修改:

<code class="javascript">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;
}</code>

在此更新的函数中:

  • o1 和 o2 代表小写的所有者名称。
  • p1 和 p2 代表小写的出版物名称。

首先,它比较所有者名称。如果它们不同,该函数将返回 -1 或 1 来表示哪个应该在另一个之前。

但是,如果所有者名称相同,该函数将继续比较出版物名称。在这种情况下,它返回 -1 或 1 来指定它们的顺序。

如果两次比较结果相等,则函数返回 0,表示两个元素相等并且应保留其原始顺序。

通过使用这个自定义函数对数组进行排序,达到了按owner_name排序,然后按publication_name排序的目的。同名的所有者将被分组在一起,每个组内的出版物按字母顺序列出。

以上是如何按多列对多维 JavaScript 数组进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn