问题描述:
有两个数组,一个字符串数组,一个数值数组,分别排序。
解决方案:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
var members1 = ["John", "Steve", "Ben", "Damon", "Lan"];
$("#p1").html(members1.join("<br/>"));
members1 = members1.sort();
$("#p2").html(members1.join("<br/>"));
var number1 = [33, 45, 22, 54, 11, 7];
$("#p3").html(number1.join("<br/>"));
number1 = number1.sort();
$("#p4").html(number1.join("<br/>"));
var number2 = [33, 45, 22, 54, 11, 7];
number2 = number2.sort(function (a, b) {
return b - a;
});
$("#p5").html(number2.join("<br/>"));
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<h3>显示排序前字符串数组元素</h3>
<p id="p1"></p>
<h3>显示排序后的字符串元素</h3>
<p id="p2"></p>
<h3>显示排序前的数字数组元素</h3>
<p id="p3"></p>
<h3>显示排序后的数字数组元素(一)</h3>
<p id="p4"></p>
<h3>显示排序后的数字数组元素(二)</h3>
<p id="p5"></p>
</div>
</form>
</body>
</html>
效果图:
方法解释:
sort()方法是基于ASCII值进行排序,所以大小写字符不能混淆排序,也不可以对数值进行排序,因为它任务10小于3 (因为1的ASCII值小于3的ASCII值),因此,为了正确对数值进行排序,必须为sort()方法定义一个比较函数。如果定义了比较函数,将把数组中的一对值发送到比较函数进行比较,重复这一操作,直到把数组的所有元素处理完毕。
当返回函数返回值小于0,表示第二个值大于第一个,因次第二个值排序靠后。
当返回函数返回值大于0,表示第二个值小于第一个,因此第一个值排序靠后。
当返回寒数返回值等于0,意味着不必改变排序。
注:对数值进行降序排序(从大到小),只需把比较函数的返回值从a-b修改为b-a;