javascript - Javascript 中的地址数组排序

标签 javascript arrays sorting

我想对地址数组进行排序。使用 .sort() 看起来很简单我的数组上的方法。

但是... 尝试在这里查看:https://jsfiddle.net/ytuzr918/

.sort()方法按字母顺序完美排序(至少我认为是这样)。然而,我的地址有数字,数字后面甚至还有更多字母。

那么有没有一种方法可以“正确”地对数组进行排序,可能是通过对排序方法进行原型(prototype)设计?

最佳答案

您可以为 Array.prototype.sort() 提供比较函数。

改编 here 的答案:

var reA = /[^a-zA-Z]/g;
var reN = /[^0-9]/g;
function sortAlphaNum(a,b) {
    var aA = a.replace(reA, "");
    var bA = b.replace(reA, "");
    if(aA === bA) {
        var aN = parseInt(a.replace(reN, ""), 10);
        var bN = parseInt(b.replace(reN, ""), 10);
        return aN === bN ? 0 : aN > bN ? 1 : -1;
    } else {
        return aA > bA ? 1 : -1;
    }
}
console.log(addresses.sort(sortAlphanum));

关于javascript - Javascript 中的地址数组排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36860029/

相关文章:

javascript - SquishIt 替换为 short

javascript - 无法让 parseInt 在 knockout.js 上工作(NaN 错误)

javascript - 异步 JavaScript 回调

php - 如何将我的一串数字输入数组以获得最频繁出现的数字?

ios - 在通过手势将 View 移动到新位置后对网格中的 View 进行排序

c# - 如何在 C# 中按升序对这些对象数组进行排序?

javascript - 在 Django 项目外加载 javascript 文件

arrays - 按钮以正确的顺序访问字典数据

Javascript:深度改变 const 数组?

java - 哪种算法在 Stream 接口(interface)中使用 sorted 方法