Example Analysis of Sorting Usage of sort Function in JS

  • 2021-06-28 10:53:51
  • OfStack

This article gives an example of the sorting usage of the sort function in JS.Share it for your reference, as follows:

Recently, I have encountered an interview question about sorting. In order to improve my knowledge, here is a learning note


<html>
<head>
<TITLE>class_obj_js_class</TITLE>
<script language=javaScript>
//sort()方法默认是按照ASCII码大小排序,看下面两个例子
function sortDemo(){
 var a, l;      // 声明变量。
 a = new Array("X" ,"y" ,"d", "Z", "v","m","r");
 l = a.sort();     // 排序数组。
 alert(l);
 return(l);      // 返回排序的数组。
}
//sortDemo();
function sortDemo2(){
  var arr = [50,200,3000];
  arr.sort();
  alert(arr);
}
//显示的结果为200、3000、50,因为是根据首字母2,3,5判断的
//sortDemo2();
//将上面的数字按照数字大小写排序,if条件是对大小的判断,因此就算对大小的排序
function testFunction(){
  var numArr = new Array(9,23,124);
  numArr.sort(function compare(a,b){
    if(a>b){
      return 1;//按照升序排列,即a排在b的后面
    }
    else
      return -1;
  });
  alert(numArr);
}
//testFunction();
//如果sort(sortfunction)中的sortfunction在a>b返回的值为真则是按照降序排列,反之按照升序排列
function testFunction2(){
  var numArr = new Array(9,124,23);
  numArr.sort(function compare(a,b){
    alert("a : " + a);
    alert("b : " + b);
    if(a > b){
      alert("a > b,返回正数");
      return -1;//按照降序排列,即a排在b的前面
    }
    else{
      alert("a < b,返回负数");
      return 1;
    }
  });
  alert(numArr);
}
//testFunction2();
/*要使数组的元素按先奇数后偶数的顺序排列,则若需a、b交换,仅当满足a是偶数且b是奇数条件即可,再按从小到大排序,仅当满足a、b均是奇数或偶数且a>b时即可
从下面的例子可以看出,根据if的条件就是需要排序的要求,返回的值大于0就可以了,就是对1次条件的排序*/
function testAdvance(){
  var a = [1, 7, 3, 9, 5, 6, 2, 8, 4];
  function f(a, b) {
    if (0 == a % 2 && 1 == b % 2) {
      return 1;//即对偶数和奇数排序
    }
    if ((1 == a % 2 && 1 == b % 2 || 0 == a % 2 && 0 == b % 2) && a > b) {
      return 1;//对奇数和偶数排序
    }
    return -1;
  }
 alert(a.sort(f));
}
//testAdvance();
//我们要做的就是写出if里面的条件,这个条件就是返回a、b需要交换的条件
//譬如:对var a=["a","A","B","b"];进行不分大小写并从大到小排序,仅当a.toString().toLowerCase() < b.toString().toLowerCase()时,交换a、b,所以用此填充if条件即可。
function testAdvance1(){
  var a=["a","A","B","b"];
  a.sort(function test(a,b){
    if(a.toString().toLowerCase() < b.toString().toLowerCase()){
      return 1;
    }
    else
      return -1;
  });
  alert(a);
}
testAdvance1();
</script>
<body >
</body>
</html>

More readers interested in JavaScript related content can view this site's topics: JavaScript Switching Special Effects and Techniques Summary, JavaScript Finding Algorithmic Techniques Summary, JavaScript Animation Special Effects and Techniques Summary, JavaScript Errors and Debugging Techniques Summary, JavaScript Data Structure and Algorithmic Techniques Summary,Summary of JavaScript Traversal Algorithms and Techniques and Summary of JavaScript Mathematical Operation Usage

I hope that the description in this paper will be helpful to everyone's JavaScript program design.


Related articles: