威尼斯wns.9778官网 > 计算机教程 > 关于javascript sort()排序你可能忽略的一点理解

原标题:关于javascript sort()排序你可能忽略的一点理解

浏览次数:118 时间:2019-08-09

前言

语法:arrayObject.sort(sortby);参数sortby可选。规定排序顺序。必须是函数。

在Javascript数组排序中有一个sort()方法,sort()方法可以说分为两种,一种是文字数组排序,一种是数字数组排序。下面这篇文章主要和大家分享了关于最近学习javascript sort()排序发现了一点理解,下面话不多说了,来一起看看详细的介绍吧。

sort() 方法用于对数组的元素进行排序。

sort()排序的原理

如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,

最近在leetcode刷题的时候遇到一个排序问题之前一直都忽略了sort排序的原理,让我们看下w3c对于sort()的说明:

首先应把数组的元素都转换成字符串(如有必要),以便进行比较。

如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。

如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。

要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。

比较函数应该具有两个参数 a 和 b,其返回值如下:

这样就可以解释为什么[0,1,5,10,8]的升序排列会是[0,1,10,5,8]威尼斯wns.9778官网,了

 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。

威尼斯wns.9778官网 1

 若 a 等于 b,则返回 0。

sort()排序参数的使用

 若 a 大于 b,则返回一个大于 0 的值。

w3c对于参数的使用还有如下一段说明:如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:

 用js中的sort()方法排序数字

  • 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
  • 若 a 等于 b,则返回 0。
  • 若 a 大于 b,则返回一个大于 0 的值。
<script>
  var arr = [23,12,1,34,116,8,18,37,56,50];
  alert(arr.sort();
</script>

所以得出如果想要升序排列的话通过a-b就可以实现 sort((a,b)=>a-b) ,反序也可以通过这个来做到:

   返回:[1, 116, 12, 18, 23, 34, 37, 50, 56, 8]

威尼斯wns.9778官网 2

上面的代码没有按照数值的大小对数字进行排序,要实现这一点,就必须使用一个排序函数:

总结

<script>
  var arr = [23,12,1,34,116,8,18,37,56,50];
  function sequence(a,b){
    if (a>b) {
      return 1;
    }else if(a<b){
      return -1
    }else{
      return 0;
    }
  }
  console.log(arr.sort(sequence));
</script>

以上就是这篇文章的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

  返回:[1, 8, 12, 18, 23, 34, 37, 50, 56, 116] (没有问题)

您可能感兴趣的文章:

当然也可以把排序函数写到sort()方法里面:

<script>
  var arr = [23,12,1,34,116,8,18,37,56,50];
  var arr2 = arr.sort(function(a,b){
     if (a>b) {
      return 1;
    }else if(a<b){
      return -1
    }else{
      return 0;
    }  
  })
  console.log(arr2);
</script>

本文由威尼斯wns.9778官网发布于计算机教程,转载请注明出处:关于javascript sort()排序你可能忽略的一点理解

关键词:

上一篇:威尼斯wns.9778官网Opcache导致php-fpm崩溃nginx返回5

下一篇:没有了