数组排序的最佳实践,PHP或Javascript

Best practice for sorting arrays, PHP or Javascript?

本文关键字:PHP Javascript 最佳 数组排序      更新时间:2023-09-26

所以我对这个特定的主题做了相当多的研究,但我仍然发现自己对最佳方法有些困惑。我的问题有两个部分。

1)。基本上我的页面是访问MySQL音乐数据库,其中持有整个专辑由一个特定的艺术家。实际上有上千个项目。页面的功能是显示所有项目,并按数组(用户从预定义的列表中选择)中的特定值(如标题、发布日期、目录号、类别等)对它们进行排序。

据我所知,有两种方法可以实现显示&排序。一旦用户加载页面,PHP就可以立即输出光盘数组,将其回显到javascript对象中,然后在用户单击按钮时使用javascript进行排序。

在用户单击按钮之后,我可以使用AJAX发送用户希望对所有项进行排序的值,使用PHP **或数据库服务器排序(如ORDER by **)进行排序并以JSON形式输出数组。例如,按页名排序的数组看起来像这样:

var discography = [
    {"id":"1",
     "pagename":"item100001",
     "category":"Albums",
     "Label":"Atlantic",
     "title":"Awesome Album",
     "date":"July 2, 1998",
     "country":"United States",
     "catalog":"666 3333 44444",
     "format":"CD"},
    {"id":"12",
     "pagename":"item100002",
     "category":"Albums",
     "Label":"Epic",
     "title":"Fun Music",
     "date":"January 22, 1992",
     "country":"United Kingdom",
     "catalog":"333 4444 5555",
     "format":"Cassette"},
      {"id":"3",
     "pagename":"item100003",
     "category":"Single",
     "Label":"Atlantic",
     "title":"Cool Single",
     "date":"October 12, 1988",
     "country":"United States",
     "catalog":"444 5555 66666",
     "format":"CD"}
    ];

然后我可以通过jquery将其输出为html并在页面上显示项目。

用户应该能够按照他们想要的值对条目进行排序和重新排序,而不仅仅是一次。

也许这个问题过于简化了前提,但是哪个是更聪明,更快,更有效的数组排序方法?服务器端排序(使用AJAX和输出为JSON)或Javascript?如果是服务器端,我相信我知道如何编写函数来正确排序数据。

但如果答案是Javascript,这就引出了我的第二个问题。

2)。我已经发现了很多很棒的javascript排序函数,但我一直在阅读javascript中"稳定"与"不稳定"排序的问题。这个问题还适用吗?我绝对需要在所有浏览器中保持一致。合并排序显然是解决这个难题的一个很好的答案,但由于我需要按特定字段(类别、日期等)排序,我需要一些关于如何使函数适应我的目的的指导。但如果我能在没有归并排序的情况下进行安全一致的排序,我就会这么做。

如果你读到这里,我很感激。欢迎任何帮助!

很难说什么是正确的方法。我更喜欢javascript解决方案,因为它在服务器上产生更少的流量。

使用array.sort(),您可以通过传递比较函数来对对象数组进行排序。https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

array.sort(function(a,b){return a.id - b.id});

如果函数返回1,假设a大于b, -1表示a小于b, 0表示它们相等。

如果有很多项目,Javascript可能会冻结你的屏幕。在这种情况下,有两个选择。重新处理服务器上的所有内容或使用WebWorker进行排序。