Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何根据包含的数字对字符串数组进行排序?_Javascript_Arrays_Sorting - Fatal编程技术网

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

Javascript 如何根据包含的数字对字符串数组进行排序?,javascript,arrays,sorting,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/ve

我有一个包含如下字符串的数组:

"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"
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;
});
第一个值是距离,我想根据该距离对数组进行排序,我该怎么做

我尝试过的一切都不起作用,我希望1000在200之后,而不是之前


谢谢

您可以这样做:

"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"
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;
});
yourray.sort(函数(a,b){
var aNum=+a.substring(0,a.indexOf(“|”);
var bNum=+b.substring(0,b.indexOf(“|”);
如果(aNum>bNum)返回1;
if(aNum

它将按所需的升序返回数组。

如果向array.prototype添加sortBy函数,则可以更轻松地执行类似操作

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;
  });
}

return+a.substring(0,a.indexOf(“|”)-+b.substring(0,a.indexOf(“|”)
应该足够了。谢谢!但我不断得到:Uncaught TypeError:undefined不是一个函数我错在哪里?@Andref用数组替换你的数组。创建数组时遇到问题,现在它可以工作了,多亏了大家!