美文网首页
数组方法 sort() 排序错乱问题

数组方法 sort() 排序错乱问题

作者: dingFY | 来源:发表于2020-12-11 11:30 被阅读0次

一、问题

在JavaScript中,数组使用sort()后发现有排序不正确的情况,如下:

let arr = [1, 2, 3, 10, 20, 30]
arr.sort()
console.log(arr) // [1, 10, 2, 20, 3, 30]

二、原因

其实,sort方法会调用每个数组元素的toString方法得到字符串,然后再根据Unicode编码对得到的字符串进行排序。

// toString后
['1', '2', '3', '10', '20', '30']

// 对应的Unicode编码
['49', '50', '51', '49', '50', '51']

// 排序
['49', '49', '50', '50', '51', '51']

// 对应数组元素
[1, 10, 2, 20, 3, 30]

三、解决办法

显然,这种结果不是我们想要的,这时,sort()方法的参数就起到了作用,我们把这个参数叫做比较函数

let arr = [1, 2, 3, 10, 20, 30]

//比较函数—升序
let compare = (x, y) => {
    if (x < y) {
        return -1;
    } else if (x > y) {
        return 1;
    } else {
        return 0;
    }
}
console.log(arr.sort(compare)) // [1, 2, 3, 10, 20, 30]

//比较函数—降序
let compare = (x, y) => {
    if (x < y) {
        return 1;
    } else if (x > y) {
        return -1;
    } else {
        return 0;
    }
}
console.log(arr.sort(compare)) // [30, 20, 10, 3, 2, 1]

可以简化为以下常用方法

let arr = [1, 2, 3, 10, 20, 30]

//升序
arr.sort((a, b) => {
    return a - b;
})

//降序
arr.sort((a, b) => {
    return b - a;
});

文章每周持续更新,可以微信搜索「 前端大集锦 」第一时间阅读,回复【视频】【书籍】领取200G视频资料和30本PDF书籍资料

相关文章

  • 数组方法 sort() 排序错乱问题

    一、问题 在JavaScript中,数组使用sort()后发现有排序不正确的情况,如下: 二、原因 其实,sort...

  • js数组方法总结

    数组的排序 sort()方法排序问题。 sort()方法是Array原型链上自带的方法。 默认排序顺序是根据字符串...

  • 数组排序和添加

    数组排序// 方法一://sort 排序 sort(function(a,b){return a-b;}) 数组...

  • JS练习2:数组(牛客)

    1 sort()方法 Array.sort()方法将数组中的元素排序并返回排序后的数组。当不带参数调用sort()...

  • sort原理

    sort()对数组进行排序,原数组改变 sort()方法没有参数时,按照ascii码对元素进行排序 sort()方...

  • JavaScript 中的数组去重和排序

    排序 Sort方法 在JavaScript中,数组Array本身有具有Sort方法可以对数组的元素进行排序,并返回...

  • NSSet和排序方法、数组去重

    NSSet 去掉数组中重复的数NSSet方法 NSDictionary方法 数组排序 冒泡排序 sort方法排序(快排)

  • javascript高级程序设计5

    数组的排序方法:1.reverse()方法 这个方法就是将数组元素反向排序2.sort()方法 ...

  • js中的数组对象排序

    一、普通数组排序 js中用方法sort()为数组排序。sort()方法有一个可选参数,是用来确定元素顺序的函...

  • js中的数组对象排序(存稿)

    一、普通数组排序 js中用方法sort()为数组排序。sort()方法有一个可选参数,是用来确定元素顺序的函...

网友评论

      本文标题:数组方法 sort() 排序错乱问题

      本文链接:https://www.haomeiwen.com/subject/nxxjpktx.html