ysx215

HTML:

1 <h3>字符串数组排序前</h3>
2 <div id="show5"></div>
3 <h3>排序后</h3>
4 <div id="show6"></div>

jquery:

var animals = [\'dog\',\'cat\',\'tiger\',\'pig\',\'bird\'];
$(\'#show5\').html(animals.join(\'<br/>\'));

          
animals = animals.sort();
$(\'#show6\').html(animals.join(\'<br/>\'));

显示结果:

字符串数组排序前
dog
cat
tiger
pig
bird
排序后
bird
cat
dog
pig
tiger

如果数组换成了数值数组呢?结果会什么怎么样的?

如下:

HTML:

<h3>数值数组排序前</h3>
<div id="show7"></div>
<h3>排序后</h3>
<div id="show8"></div>

jquery:

ar nums = [\'12\',\'2\',\'5\',\'36\',\'4\'];
$(\'#show7\').html(nums.join(\'<br/>\'));
       
nums = nums.sort();
$(\'#show8\').html(nums.join(\'<br/>\'));

显示结果:

数值数组排序前
12
2
5
36
4
排序后
12
2
36
4
5

很明显,数值数组最后的排序结果不是我们想要的。这是为什么呢?
因为sort()方法排序,是基于ASCII值进行排序的。故它会认为36小于4(因为3的ASCII值小于4的ASCII值)。所以要对排序的sort()方法定义一个比较函数:

jquery:

ar nums = [\'12\',\'2\',\'5\',\'36\',\'4\'];
$(\'#show7\').html(nums.join(\'<br/>\'));

//定义了sort的比较函数
nums = nums.sort(function(a,b){
return a-b;
});

$(\'#show8\').html(nums.join(\'<br/>\'));

显示结果:

数值数组排序前
12
2
5
36
4
排序后
2
4
5
12
36

这才是我想要的结果!

知识点:

1,sort(function(a,b){return a-b;})对传入的一对值进行比较,然后返回的的值为:小于0,大于0,等于0;(大于0交换位置,反之则不)

  * 当小于0时,说明b>a,故b的排序靠后(即不变).

  * 当大于0时,说明a>b,故a的排序靠后.

  * 当等于0时,说明a=b,故不改变排序.

如果对数值数组的值进行降序排序。那么只要把返回的值改为b-a!

 

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2021-12-10
  • 2022-12-23
  • 2022-12-23
  • 2021-05-21
  • 2021-11-19
  • 2021-11-10
  • 2021-10-21
猜你喜欢
  • 2022-12-23
  • 2021-05-17
  • 2021-11-09
  • 2022-01-13
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案