JS中的sort 函数的基本用法

258 阅读2分钟

sort的基本用法


吾听闻js有一sort方法,对于排序甚是友好,特此一用

    let  arr1 = [0,3,2,5,1,4]
    let  newArr1 = arr1.sort()
    console.log(newArr1);   //输出  [0, 1, 2, 3, 4, 5]
    let  arr2 =  [10,30,25,51,111,4];
    let  newArr2 = arr1.sort()
    console.log(newArr1);  //输出 [10, 111, 25, 30, 4, 51]

小伙伴一脸懵逼,所以来看看sort的基本用法

Arr.sort(fun) 参数fun可选,规定排序的顺序

当没有参数的时候,会根据字符串UniCode码(字母的顺序)对数组中的元素进行排序(如有必要应该把数组都转换成字符串再去比较),如果想要按照其他规则去排序,就需要提供一个fun(比较函数),fun里得有两个参数(a,b),返回一个用于说明值的相对顺序的数字。返回值有以下几种情况:

  • 若a小于b,排序后的数组a出现在b 返回小于0的值
  • 若a等于b,则返回0
  • 若a大于b,则返回大于0的值

简而言之:比较函数两个参数a和b,返回的时a-b 就是升序 b-a就是降序

栗子:

  1. 不传参数的
    let fruits = ["Banana", "Orange", "Apple", "Mango"];
	fruits.sort();
	console.log(fruits) // 输出['Apple', 'Banana', 'Mango', 'Orange']
	
    let  arr2 =  [10,30,25,51,111,4];
    let  newArr2 = arr1.sort()
    console.log(newArr1);  //输出 [10, 111, 25, 30, 4, 51]
  1. 带参数进行排序的
    <!--升序-->
      let arr2 = [10, 30, 25, 51, 111, 4];
      arr2.sort((a, b) => {
            return a - b
      });
        console.log(arr2)   //输出 [4, 10, 25, 30, 51, 111]
      
    <!--降序-->
      arr2.sort((a, b) => {
            return b - a
      });
        console.log(arr2) //输出 [111, 51, 30, 25, 10, 4]
      
  1. 对对象的属性排序
    let arr3 = [{id:3}, {id:6}, {id:5}, {id:4},{id:2}, {id:1}]
        arr3.sort(a,b=>{
        return   a.id-b.id
        })
        console.log(arr3)   // 输出  [{id:1}, {id:2}, {id:3},{id:4},{id:5},{id:6}]

4.对对象多个属性排序

  var arr4 = [{ id: 1,price:1}, {id: 4,price:2}, { id: 3,price:5}, { id:1,price:2}, { id:4,price:3},];
            arr4.sort(function (a, b) {
               if(a.id!= b.id){
                 return  a.id-b.id
               }else{
                return  a.price - b.price
               }
            })
            console.log(arr4); // 输出 [{id:1,price:1}{id:1,price:2}{id:3,price:5}{id:4,priec:2}{id:4,price:3}]