我有一个包含许多对象的数组。
Array:
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 对象进行排序?
thx
由于有很多愚蠢的实现被提议使用 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;
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)