-1
我有一个数组,其中包含字母和数字我想按数值排序第一个字母升序,然后数字升序。通过jquery对字母和数字都进行排序的数组排序
我有一个数组,其中包含字母和数字我想按数值排序第一个字母升序,然后数字升序。通过jquery对字母和数字都进行排序的数组排序
您需要编写自定义比较函数,并且该函数需要填充它与前导零找到的任何数字,以便字符串中的所有数字都具有相同的长度。
这将这样的伎俩:
var fruits = ["Banana","5","15", "Orange", "Apple", "Mango"];
fruits.sort(myCompFunc);
function myCompFunc(a,b)
{
// pad digits
var x = padNumbers(a);
var y = padNumbers(b);
// return comparison
return (x>y);
}
function padNumbers(str)
{
var retVal = "";
var digits = "";
for (var i=0; i<str.length; i++)
{
var c = str.substr(i,1);
if (c>="0" && c<="9")
digits += c;
else
{
if (digits != "")
{
var l = 10-digits.length;
for (var d=0; d<l; d++)
digits = "0" + digits;
retVal += digits;
digits = "";
}
retVal += c;
}
}
if (digits != "")
{
var l = 10-digits.length;
for (var d=0; d<l; d++)
digits = "0" + digits;
retVal += digits;
}
return retVal;
}
可与正则表达式替换更简洁来完成。
function padNumbers(str)
{
return str.replace(/\d+/g, function(match) {
return new Array(10-match.length+1).join('0')+match; });
}
你想要吗? 那么有没有尝试?或者你写的代码呢? – Blu
我试过.sort()和.reverse() – Shivam
设置jsfiddle它将足够好 – Blu