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就是降序
栗子:
- 不传参数的
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]
- 带参数进行排序的
<!--升序-->
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]
- 对对象的属性排序
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}]