javascript - JQUERY 对对象数组进行排序

标签 javascript jquery

我有一个包含许多对象的数组。

数组:

 var activeMembers=[];

上述数组中的 DIV 对象如下所示 - 每个对象一次添加一个:

 <div id="mary" class="chatmember 1011"></div>
 <div id="steven" class="chatmember 1051"></div>
 <div id="adam" class="chatmember 1701"></div>
 <div id="bob" class="chatmember 1099"></div>
 <div id="peter" class="chatmember 1123"></div>

有没有一种快速的方法可以根据 A-Z 的 ID 对数组中的这些 DIV 对象进行排序?

谢谢

最佳答案

既然有这么多愚蠢的实现被提议使用 jQuery,而这只是浪费资源,我将提出我自己的实现。这只是通过数组中对象的属性对数组进行的直接 javascript 排序。为此,您只需使用带有自定义比较函数的数组排序方法,该函数对 id 值进行 alpha 比较。根本没有理由或优势让 jQuery 参与其中。

activeMembers.sort(function(a, b) {
   var aID = a.id;
   var bID = b.id;
   return (aID == bID) ? 0 : (aID > bID) ? 1 : -1;
});

请注意,按照问题中的要求,这会对数组中的 div 引用列表进行排序。它不会对页面布局中的对象进行排序。为此,您必须对引用列表进行排序,然后根据新的数组顺序重新排列页面中的 div。

如果您可以相信在您自己的 HTML 中没有两个 ID 是相同的这一事实(因为您永远不应该有两个具有相同 ID 的对象),您可以缩短并加快自定义排序功能,使其仅是这样的:

activeMembers.sort(function(a, b) {
   return (a.id > b.id) ? 1 : -1;
});

关于javascript - JQUERY 对对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7104024/

相关文章:

javascript - React Redux 不调度操作

javascript - 如何在不触发错误的情况下检测 iframe 是否可访问?

javascript - Highcharts - 重绘时停止 Y 轴值更改

javascript - 让 Jquery 在不刷新的情况下多次滑动 div

jquery - 如何获取jqgrid的所有ID(包括分页ID)?

javascript - 暂停执行动画

javascript - 无法调用基本 ngAnimate 示例的函数

javascript - Veracode 报告 XMLHttpResponse Javascript 中的 XSS 问题

javascript - 使用 JavaScript 处理 JSON 数据

javascript - 知道点击了哪个用户创建的 div