JavaScript数组排序

本文详细介绍了JavaScript中数组的sort方法使用方法,包括不带参数时的默认排序方式及通过自定义函数实现数值排序的方式。提供了多种自定义排序函数的实例,帮助读者掌握不同场景下的数组排序技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

返回一个元素已经进行了排序的 Array 对象。

arrayobj.sort(sortfunction)

参数

arrayObj
    必选项。任意 Array 对象。
sortFunction
    可选项。是用来确定元素顺序的函数的名称。如果这个参数被省略,
    那么元素将按照 ASCII 字符顺序进行升序排列。

说明

sort 方法将 Array 对象进行适当的排序;
在执行过程中并不会创建新的 Array 对象。

如果为 sortfunction 参数提供了一个函数,那么该函数必须返回下列值之一:

    * 负值,如果所传递的第一个参数比第二个参数小。
    * 零,如果两个参数相等。
    * 正值,如果第一个参数比第二个参数大。

Demo1(默认按字母排序):

<script language="javascript">
  var nameArr = new Array("douguoqiang","hedan","redhacker","panliu888","maxuan","xuejianping","lanse","zhangsan","lisi","wangwu");
  nameArr.sort();
  for (var i = 0; i < nameArr.length; i++) {
    document.writeln(nameArr[i]);
  }
</script>

结果:douguoqiang hedan lanse lisi maxuan panliu888 redhacker wangwu xuejianping zhangsan

Demo(数字排序,sort(prama)方法带参数):

<script>
  var numArr = new Array(12,23,1,4,23,34,2,5);
  numArr.sort(function compare(a,b){return a-b;});
  for (var i = 0; i<numArr.length; i++) {
    document.write(numArr[i] +"<br>");
  }
</script>

结果:
1
2
4
5
12
23
23
34

Demo3(Demo3反排序):

<script>
  var numArr = new Array(12,23,1,4,23,34,2,5);
  numArr.sort(function compare(a,b){return b-a;});
  for (var i = 0; i<numArr.length; i++) {
    document.write(numArr[i] +"<br>");
  }
</script>

结果:
34
23
23
12
5
4
2
1

Demo4(Demo3的第二种写法):

<script>
  var numArr = new Array(12,23,1,4,23,34,2,5);
  numArr.sort(new Function("a","b","return a-b;"));
  for (var i = 0; i<numArr.length; i++) {
    document.write(numArr[i] +"<br>");
  }
</script>

结果:
1
2
4
5
12
23
23
34

Demo5(Demo3的第三种写法):

<script>
  function compare(a,b) {
    return a-b;
  }
  var numArr = new Array(12,23,1,4,23,34,2,5);
  numArr.sort(compare);
  for (var i = 0; i<numArr.length; i++) {
    document.write(numArr[i] +"<br>");
  }
</script>

结果:
1
2
4
5
12
23
23
34

Demo6(Demo3的第四种写法):

<script>
  var compare = function(a,b) {
    return a-b;
  }
  var numArr = new Array(12,23,1,4,23,34,2,5);
  numArr.sort(compare);
  for (var i = 0; i<numArr.length; i++) {
    document.write(numArr[i] +"<br>");
  }
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值