1、sort()
方法用类似Map原地算法对数组的元素进行排序,并返回数组,会改变原数组为排序好的数组(重点:会改变原数组)
2、arr.sort([compareFunction])
①:该方法传入一个用来进行排序的函数。
②:如果省略,元素按照转换为的字符串的各个字符的Unicode位来进行排序
3、实列
①:不传入函数时的使用:
const months = ['March', 'Jan', 'Feb', 'Dec'];
months.sort();
console.log(months);
// expected output: Array ["Dec", "Feb", "Jan", "March"]
const array1 = [1, 30, 4, 21, 100000];
array1.sort();
console.log(array1);
// expected output: Array [1, 100000, 21, 30, 4]
【重点:可以看到上面排序数字的时候出现了问题,这是因为sort方法将元素转换为字符串的各个字符的Unicode位来进行排序】
②:传入函数参数的使用(主要为了解决自定义排序的问题)
/**
/如果传了 compareFunction ,那么数组会按照调用该函数的返回值排序。即 a 和 b 是两个将要被比较的元素:
如果 compareFunction(a, b) return 的结果小于 0 ,那么 a 会被排列到 b 之前;
如果 compareFunction(a, b) return 的结果等于 0 , a 和 b 的相对位置不变。
如果 compareFunction(a, b) return 的结果大于 0 , b 会被排列到 a 之前。
*/
//默认升序排法
let news = arr.sort(function(a,b) {
if(a>b) {
return 1
}
if(a == b) {
return 0
}
if(a<b) {
return -1
}
})
//降序排法
let news = arr.sort(function(a,b) {
if(a>b) {
return -1
}
if(a == b) {
return 0
}
if(a<b) {
return 1
}
})
上述代码说明:如果传入的函数返回的结果为1,则b会排到a的前面(b,a),那么上述代码中的降序排法当a<b的时候函数返回的为1,满足这个条件,大的数被排在了小的数的前面,就形成了降序排法