如何对字母数字字符串值进行排序?
这里我使用javascript.But它排序字符串alone.What我需要的是从字符串分割的数值和排序字母数字字符串值的数值values.Here是我的代码如何对字母数字字符串值进行排序?
function sortUnorderedList(ul, sortDescending) {
if (typeof ul == "string")
ul = document.getElementById(ul);
var lis = ul.getElementsByTagName("li");
var vals = [];
for (var i = 0, l = lis.length; i < l; i++)
vals.push(lis[i].innerHTML);
vals.sort();
if (sortDescending)
vals.reverse();
for (var i = 0, l = lis.length; i < l; i++)
lis[i].innerHTML = vals[i];
}
任何建议?
编辑:当前结果
PPG 101
PPG 102
PPG 57
PPG 58
PPG 99
预期结果:
PPG 57
PPG 58
PPG 99
PPG 101
PPG 102
要执行数字排序,则必须调用sort方法时传递一个函数作为参数。
vals.sort(function(a, b) {
return (a-b);
});
更多细节
我没有看到数字前的字符串,使用更完整的Mitch Satchwell功能波纹管(这是相同的想法)。 – 2012-08-13 09:14:19
见http://www.javascriptkit.com/javatutors/arraysort.shtml如果你想通过字符串第一个排序,然后按空格之后的数值,你需要指定自己的功能,在传递给sort
函数,如下所示:
arr.sort(function(a,b) {
a = a.split(' ');
b = b.split(' ');
if (a[0] == b[0]) {
return parseInt(a[1]) - parseInt(b[1]);
}
return a[0] > b[0];
});
上面的示例首先按字符串排序,然后按字符串(数字)排序。上面的代码适用于假定被排序的值将始终采用上述格式,并且缺少对输入的任何检查。
第一次点击它工作正常......但第二次点击显示错误Microsoft JScript运行时错误:'0'为空或不是对象 – bala3569 2012-08-13 10:23:17
你能提供一个jsfiddle吗? – 2012-08-13 11:22:28
请提供示例HTML,以便我们可以看到您要完成的工作。您是否尝试对LI标签列表中的数字进行排序,同时忽略HTML中的所有非数字? – jfriend00 2012-08-13 08:53:34
@ jfriend00:没有第一我需要排序后的字母排序数字 – bala3569 2012-08-13 08:58:03
http://*.com/questions/4340227/sort-mixed-alpha-numeric-array – ArtBIT 2012-08-13 09:04:11