JavaScript中Array内置对象里sort函数的使用

一、概念

        sort()方法对数组的元素进行排序,并返回按指定要求排序后的数组。该默认排序顺序是将元素转换为字符串后进行比较。

二、语法

        arr.sort( compareCallback( firstElement, secondElement ) )

说明:

        compareCallback( firstElement, secondElement ) 是传入 sort() 的比较回调函数,用来指定按自定义的某种顺序进行排列的函数。不传时,元素按照转换为的字符串的各个字符的Unicode位点进行排序。

        firstElement 第一个用于比较的元素。

        secondElement 第二个用于比较的元素。

        compareCallback( firstElement, secondElement ) 小于0时,升序

        compareCallback( firstElement, secondElement ) 等于0时,位置不变

        compareCallback( firstElement, secondElement ) 大于0时,降序

三、示例

1、比较数字数组

let numArr = [ 12, 32, 11, 45, 7, 0, 28 ]

let sortedNumArr1 = numArr.sort()

console.log( sortedNumArr1  ) // 输出结果:[0, 11, 12, 28, 32, 45, 7]        // 排序错误

上面用默认排序来排列数字数组时,是将元素转为字符串进行比较的,所以会出现排序错误

let sortedNumArr2 = numArr.sort( ( first, second ) => first - second )

console.log( sortedNumArr2 ) // 输出结果:[0, 11, 12, 28, 32, 45, 7]        // 排序正确

2、比较字符串数组

let strArr = [ 'LinLiu', 'HuangWu', 'ZhaoQi', 'zhongli', 'a' ]

let sortedStrArr1 = strArr .sort()

console.log( sortedStrArr1 ) // 输出结果:['HuangWu', 'LinLiu', 'ZhaoQi', 'a', 'zhongli']

忽略大小写比较

let sortedStrArr2 = strArr .sort(( first, second ) => {

        // 统一转为大写进行比较

        let firstName = first.toUpperCase()

        let secondName = second .toUpperCase()

        if ( firstName < secondName  ) return -1

        if ( firstName > secondName  ) return 1

        return 0

} )

console.log( sortedStrArr2 ) // 输出结果:['a', 'HuangWu', 'LinLiu', 'ZhaoQi', 'zhongli']

猜你喜欢

转载自blog.csdn.net/my__flower/article/details/122087026