自定义javascript字符串排序比较器
Custom sort comparator for javascript string
我有一个自定义比较器来排序一些字符串,它不像预期的那样按降序排序。
var list = document.getElementById('mylist');
var items = list.childNodes;
var itemsArr = [];
for (var i in items) {
if (items[i].nodeType == 1) { // get rid of the whitespace text nodes
itemsArr.push(items[i]);
}
}
var sortOrder = "DESC";
itemsArr.sort(function(a, b) {
switch (sortOrder) {
case "ASC":
var val = a.innerHTML.localeCompare(b.innerHTML);
break;
case "DESC":
var val = a.innerHTML.localeCompare(b.innerHTML);
if (val === 1)
val = -1;
if (val === -1)
val = 1;
break;
}
return val
});
/*itemsArr.sort(function(a, b) {
return a.innerHTML == b.innerHTML
? 0
: (a.innerHTML > b.innerHTML ? 1 : -1);
});*/
for (i = 0; i < itemsArr.length; ++i) {
list.appendChild(itemsArr[i]);
}
<ul id="mylist">
<li id="list-item3">Service</li>
<li id="list-item4">Vendor</li>
<li id="list-item2">Service_Type</li>
<li id="list-item1">Call_Date</li>
<li id="list-item3">Customer Sat Rating</li>
<li id="list-item4">TTA</li>
<li id="list-item2">Support_Rep</li>
<li id="list-item1">Source_State</li>
<li id="list-item3">Severity</li>
<li id="list-item4">Customer_Type</li>
<li id="list-item2">CALL ID</li>
<li id="list-item1">Resolved_Ontime</li>
<li id="list-item2">Product</li>
<li id="list-item1">Minutes_On_Phone</li>
</ul>
对于我之前排序的不同数据,升序和降序都工作得很好。对于当前的html数据,它没有。谁能告诉我哪里说错了吗?
您将其设置为DESC,然后再设置为DESC:
case "DESC":
var val = a.innerHTML.localeCompare(b.innerHTML);
if (val === 1)
val = -1;
if (val === -1)
val = 1;
break;
改为:
case "DESC":
var val = -1 * a.innerHTML.localeCompare(b.innerHTML);
break;
相关文章:
- Backbone.js比较器函数是'工作不正常
- 在获取后将新模型准备到集合中(不带比较器)
- 主干中的比较器在添加新模型时需要排序调用
- jQuery 表排序器排序不起作用
- Linqjs 与比较器问题相交
- 比较和排序 JavaScript 数组
- 自定义筛选器排序方式
- 记住比较器函数的参数顺序的技巧是什么
- 覆盖主干网.js比较器
- Backbone.js-排序和迭代-比较器不工作
- 使用“”对字符串进行排序;小于/大于“;比较器中的比较运算符
- 将两个模型与一个模型传递到主干比较器,并进行字母数字排序
- 如何为javascript排序函数制作一个高效的比较器来对字符串数组进行排序
- 如何使用比较器按多个属性排序
- 使用比较器排序是否比使用key- function排序更好?
- 自定义javascript字符串排序比较器
- js比较器函数,如何实现降序排序
- JavaScript通过一些比较器对DOM元素进行排序,不需要jQuery
- Javascript排序对象值,有多个含义(组),只有比较器
- Javascript排序自定义比较器函数-排序一个排序数组