我不是使用关联数组。我使用这样的一维数组,
array("1,a","5,b","2,c","8,d","6,f");
我可以如何对这个数组进行排序?
结果应该是:
array("1,a","2,c","5,b","6,f","8,d");
我不是使用关联数组。我使用这样的一维数组,
array("1,a","5,b","2,c","8,d","6,f");
我可以如何对这个数组进行排序?
结果应该是:
array("1,a","2,c","5,b","6,f","8,d");
sort()
没有使用自定义排序函数时,它会按您希望的方式进行排序(按字典顺序)。
>>> ["1,a","5,b","2,c","8,d","6,f"].sort();
["1,a", "2,c", "5,b", "6,f", "8,d"]
slice()
进行浅复制。9
,并且希望按数字的序数进行排序,则需要自定义排序函数。["1,a","5,b","2,c","8,d","6,f"].sort(function(a, b) {
return parseInt(a, 10) - parseInt(b, 10);
});
array.sort()
进行排序。文档在这里:http://www.w3schools.com/jsref/jsref_sort.asp。试试这个
<script>
var abc=new Array("1,a","5,b","2,c","8,d","6,f");
document.write("<br/>");
document.write(abc.sort());
</script>
var arrayVar = ["1,a","2,c","5,b","6,f","8,d"];
arrayVar.sort()
arrayVar; // "1,a","2,c","5,b","6,f","8,d"
尝试使用:
function sortNumber(a,b)
{
return (a.split(","))[0] - (b.split(","))[0] ;
}
var n = ["1,a","5,b","2,c","8,d","6,f"];
alert( n.sort(sortNumber) );
这是我的做法:
var arr1 = new Array("1,a","5,b","2,c","8,d","6,f");
var arr2 = arr1.sort( function(a, b){
var ax = a.split(",");
var bx = b.split(",");
return ax[0]-bx[0];
});
document.getElementById("result").innerHTML = arr2.join(" : ");
你需要编写自己的比较函数来比较数字,否则默认的sort()
会将像"40,a"
这样的内容放在"5,b"
之前。
这里有一个例子,它只是在,
字符上进行拆分,并假设它前面的值是数字。我已经添加了"40,a"
到示例中,以展示它正确地排序大于9的数字。
function mySort(a,b)
{
return a.split(",", 1) - b.split(",", 1);
}
var theArray = ["1,a", "5,b", "2,c", "40,a", "8,d", "6,f"];
theArray.sort(mySort); // "1,a","2,c","5,b","6,f","8,d","40,a"
我假设您想首先按数字部分排序,进行数值排序,然后在逗号后面的位上进行第二个词典(字符串)排序。这样,像“11,a”这样的值将排在“2,a”之后 - 如果您只是进行默认排序,“11,a”将排在“2,a”之前。所以:
var a = ["1,a","11,a","8,a","24,z","5,b","2,c","8,d","6,f"];
a.sort(function(a,b) {
var aparts = a.split(","),
bparts = b.split(","),
anum = +aparts[0], // convert first part to number
bnum = +bparts[0],
aletter = aparts[1],
bletter = bparts[1];
if (anum === bnum)
return aletter < bletter ? -1 : aletter === bletter ? 0 : -1;
else
return anum - bnum;
});
结果:
["1,a", "2,c", "5,b", "6,f", "8,a", "8,d", "11,a", "24,z"]
试试这个:
<script type="text/javascript">
var testArray = new Array();
testArray[0] = '1';
testArray[1] = '5';
testArray[2] = '9';
testArray[3] = '8';
testArray[4] = '6';
testArray[5] = '2';
var getlength = testArray.length;
testArray.sort(function(a,b){return a - b});
for(var i=0; i<getlength;i++) {
alert(testArray[i]);
}
</script>
.sort()
时遇到了什么问题?你想要按数字先排序,然后按字母进行二次排序吗?还是只是对整个文本进行标准字符串排序?也就是说,你想如何对["1,a", "11,a", "2,b", "2,c"]
进行排序? - nnnnnn