我有一个包含这样字符串的数组:
"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!
谢谢!
答案 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]; });