如何根据包含的数字对字符串数组进行排序?

时间:2014-07-20 10:33:50

标签: javascript arrays sorting

我有一个包含这样字符串的数组:

"1115.49|Onroll|Paiporta|/v2/networks/onroll-paiporta"
"1767.92|Göteborg|Göteborg|/v2/networks/goeteborg"
"190.4|ARbike|Arezzo|/v2/networks/arbike"
"201.36|JesinBici|Jesi|/v2/networks/jesinbici"
"403.59|Venezia|Venezia|/v2/networks/venezia"
"395.07|Mantova|Mantova|/v2/networks/mantova"

第一个值是距离,我想根据那个距离对数组进行排序,我该怎么办?

我尝试过的所有东西都不起作用,我不会在200之前来到1000!

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以这样做:

yourArray.sort(function (a, b) {
    var aNum = +a.substring(0, a.indexOf('|'));
    var bNum = +b.substring(0, b.indexOf('|'));
    if (aNum > bNum) return 1;
    if (aNum < bNum) return -1;
    return 0;
});

将以您想要的升序返回数组。

答案 1 :(得分:0)

如果你将一个sortBy函数添加到Array.prototype,你可以更容易地做到这一点。

Array.prototype.sortBy = function(f) {
  this.sort(function(a, b) {
    a = f(a); b = f(b);
    if(a > b) return 1;
    if(a < b) return -1;
    return 0;
  });
}

然后你可以写

array.sortBy(function(s) { return +s.split("|")[0]; });