sort()方法 数组排序 附有源码!!!-前端-阿习进阶博客
Java
MySQL
大数据
Python
前端
黑科技
    首页 >> 互联网 >> 前端

sort()方法 数组排序 附有源码!!!

[导读]:一、sort()方法基本介绍1.语法arr.sort([compareFunction])2.参数compareFunction可选用来指定按某种顺序进行排列的函数。如果省略,元素按照转换为的字符串的各个字符的Unicode位点进行排序。a,b两个将要被比较的元素。如果compareFunction(a,b)小于0,那么a会被排列到b之前。如果com...

  一、sort()方法基本介绍

  1.语法

  arr.sort([compareFunction])

  2.参数

  compareFunction可选

  用来指定按某种顺序进行排列的函数。如果省略,元素按照转换为的字符串的各个字符的Unicode位点进行排序。

  a,b两个将要被比较的元素。

  如果compareFunction(a,b)小于0,那么a会被排列到b之前。

  如果compareFunction(a,b)等于0,a和b的相对位置不变。

  如果compareFunction(a,b)大于0,b会被排列到a之前。

  3.返回值

  排序后的数组。请注意,数组已原地排序,并且不进行复制。

  3.1未指明compareFunction,那么元素会按照转换为的字符串的诸个字符的Unicode位点进行排序

var arr = [1,3,9,5,0];
arr.sort();
console.log(arr)  //[0, 1, 3, 5, 9]

  如果指明了 compareFunction ,那么数组会按照调用该函数的返回值排序


  比较数字而非字符串,可以简单的以a和b的结果排序,a-b 升序 b-a 降序

var arr = [1,3,9,5,0];
arr.sort((a,b)=>a-b);
console.log(arr)  // [0, 1, 3, 5, 9] 升序
var arr = [15,68,3,2,89];
arr.sort((a,b)=>b-a);
console.log(arr)  // [9, 5, 3, 1, 0] 降序

  字符串排序,可直接使用sort()方法

var arr = ['h','e','l','l','o'];
arr.sort();
console.log(arr)  // ["e", "h", "l", "l", "o"]

  依据对象的某个属性排序

var arr = [
  { name: 'easy', age: 21 },
  { name: 'apple', age: 37 },
  { name: 'cat', age: 45 },
  { name: 'dad', age: -12 },
  { name: 'fa', age: 15},
  { name: 'zara', age: 37 }
 ];
//依据age排序
  arr.sort(function(a,b){
    return(a.age-b.age)
});
console.log(arr);
//[
  // 0: {name: "dad", age: -12}
  // 1: {name: "fa", age: 15}
  // 2: {name: "easy", age: 21}
  // 3: {name: "apple", age: 37}
  // 4: {name: "zara", age: 37}
  // 5: {name: "cat", age: 45}
 //] 
  
//依据name排序
  arr.sort(function(a,b){
    var nameA=a.name;
    var nameB=b.name;
    if(nameA<nameB){
      return -1;
    }
    if(nameA>nameB){
      return 1;
    }
      return 0;
   })
    console.log(arr); 
  //[
   // 0: {name: "zara", age: 37}
   // 1: {name: "fa", age: 15}
   // 2: {name: "easy", age: 21}
   // 3: {name: "dad", age: -12}
   // 4: {name: "cat", age: 45}
   // 5: {name: "apple", age: 37}
  ]

image.png

本文来自阿习进阶博客,如若转载,请注明出处:http://yanxias.com

留言区

联系人:
手   机:
内   容:
验证码:

历史留言

联系人:阿习

手机号:156****7890

留言内容:欢迎大家一起讨论文章,有喜欢发帖的可以私聊我给你开权限,发文章

留言时间:2022-05-09 17:46:15

回复内容:互联网阿习

回复时间:2022-05-09 17:46:15

用户IP:220.***.***.232

用户操作系统:Windows 10

欢迎加Easy的QQ