按多列对多维数组进行排序
在 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>
在此更新的函数中:
首先,它比较所有者名称。如果它们不同,该函数将返回 -1 或 1 来表示哪个应该在另一个之前。
但是,如果所有者名称相同,该函数将继续比较出版物名称。在这种情况下,它返回 -1 或 1 来指定它们的顺序。
如果两次比较结果相等,则函数返回 0,表示两个元素相等并且应保留其原始顺序。
通过使用这个自定义函数对数组进行排序,达到了按owner_name排序,然后按publication_name排序的目的。同名的所有者将被分组在一起,每个组内的出版物按字母顺序列出。
以上是如何按多列对多维 JavaScript 数组进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!