数组sort方法的使用
sort()方法是数组自带的一种排序方法,数组在原数组上进行排序,不生成副本。
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
1.当元素为字符串时
将元素从字符串从第一位开始比较,第一位相同时比较后一位
let arr = ['cb', 'a', 'g', 'cy'] arr.sort() console.log(arr) // [ 'a', 'cb', 'cy', 'g']
2.当元素为数字时
默认将数字元素当做字符串进行比较,先比较第一位,第一位相同时再比较后一位
let arr = [20, 13, 11, 8, 0, 11] arr.sort() console.log(arr) // [0, 11, 11, 13, 20, 8]
3.如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。
升序排序
let arr = [20,13,11,8,0,11] arr.sort(function(a,b){ //可以将a理解成newValue, b理解成oldValue return a-b }) console.log(arr) // [0,8,11,11,13,20] //a,b表示相邻的两个元素 //若返回值>0,数组元素将按升序排序 //若返回值<0,数组元素将按降序排序
降序排序
let arr = [20,13,11,8,0,11] arr.sort(function(a,b){ //可以将a理解成newValue, b理解成oldValue return b-a }) console.log(arr) // [20,13,11,11,8,0] //a,b表示相邻的两个元素 //若返回值>0,数组元素将按升序排序 //若返回值<0,数组元素将按降序排序
也可以根据对象的某个属性进行排序
let obj = [ {name:'小明',age:12}, {name:'小红',age:10}, {name:'小花',age:16}, {name:'小黑',age:14} ] obj.sort(function(a,b){ return a.age-b.age }) console.log(obj) // 根据年龄升序排序
--------------------------------------------------------------------------------------------------------------------------------------
let obj = [ {name:'小明',age:12}, {name:'小红',age:10}, {name:'小花',age:16}, {name:'小黑',age:14} ] obj.sort(function(a,b){ return b.age-a.age }) console.log(obj) // 根据年龄降序排序
故不积跬步,无以至千里;不积小流,无以成江海。