快速实现排序sort
arr.sort([compareFunction])
1. 如果未指明compareFunction函数,直接写arr.sort()
,会自动按照每个元素转换为的字符串的Unicode编码值进行排序(用于字符串排序)
2. 如果指明compareFunction函数,则比较的是数字而非字符串
compareFunction(a,b)有两个参数,如果返回的是a-b则是升序,如果返回的是b-a则是降序
例题
let array1 = [32, 34, 1, 6, 45, 54, 3, 7, 5, 4];
array1.sort();
// sort()默认
// 未指明compareFunction,那么元素会按照转换为的字符串的诸个字符的Unicode位点进行排序
console.log(array1); // [1, 3, 32, 34, 4, 45, 5, 54, 6, 7]
array1.sort((a, b) => a - b)
console.log(array1) // [1, 3, 4, 5, 6, 7, 32, 34, 45, 54]
array1.sort((a, b) => b - a)
console.log(array1) //[54, 45, 34, 32, 7, 6, 5, 4, 3, 1]
3. 数组是个对象,对对象的值进行排序
按age(数值)
let array2 = [{ name: 'lk', age: 23 }, { name: 'zy', age: 15 }, { name: 'ij', age: 27 }, { name: 'er', age: 13 }]
array2.sort(function (a, b) {
return (a.age - b.age) // 依据age排序,一定要return
})
console.log(array2)
结果
按name(字符串)
let array2 = [{ name: 'lk', age: 23 }, { name: 'zy', age: 15 }, { name: 'ij', age: 27 }, { name: 'er', age: 13 }]
array2.sort(function (a, b) {
if (a.name > b.name) { // < 就是降序
return 1; //return的值大于0 就返回正序小于0就是降序
} else {
return -1;
}
})
console.log(array2)
结果
最后
最近还整理一份JavaScript与ES的笔记,一共25个重要的知识点,对每个知识点都进行了讲解和分析。能帮你快速掌握JavaScript与ES的相关知识,提升工作效率。
有需要的小伙伴,可以点击下方卡片领取,无偿分享