按排序Javascript排序

时间:2014-06-21 20:20:36

标签: javascript

你可以帮帮我吗? ...我在Javascript中有一个数组,我需要订单升序,我的问题是......我只需要订购第一个数字......" - "离开......

这是我的Arrya ......

["20140615-http://localhost:8080/PROYECTO/upload/ORBTHZK/image_ORBTHZK.gif", "20140617-http://localhost:8080/PROYECTO/upload/ORBITHCITY/image_ORBITHCITY.png", "20140601-http://localhost:8080/PROYECTO/upload/423445/image_423445.gif"]

我需要这个......

["20140601-http://localhost:8080/PROYECTO/upload/423445/image_423445.gif", "20140615-http://localhost:8080/PROYECTO/upload/ORBTHZK/image_ORBTHZK.gif", "20140617-http://localhost:8080/PROYECTO/upload/ORBITHCITY/image_ORBITHCITY.png"]

3 个答案:

答案 0 :(得分:1)

奇怪的是,在数组上调用sort()的工作正常。这是我在节点控制台中所做的一个副本:

var arr = ["20140615-http://localhost:8080/PROYECTO/upload/ORBTHZK/image_ORBTHZK.gif", "20140617-http://localhost:8080/PROYECTO/upload/ORBITHCITY/image_ORBITHCITY.png", "20140601-http://localhost:8080/PROYECTO/upload/423445/image_423445.gif"];

arr.sort()

[ '20140601-http://localhost:8080/PROYECTO/upload/423445/image_423445.gif',
  '20140615-http://localhost:8080/PROYECTO/upload/ORBTHZK/image_ORBTHZK.gif',
  '20140617-http://localhost:8080/PROYECTO/upload/ORBITHCITY/image_ORBITHCITY.png' ]

根据您的环境可能会有所不同,但Node和所有主流浏览器都支持它。因此,如果您要定位一些旧/边缘案例浏览器YMMV。

答案 1 :(得分:1)

试试这个:

function sortArr(arr, f, isNum) {
    var l = arr.length,
        data = new Array(l);
    for(var i=0; i<l; ++i)
        data[i] = [f(arr[i]), arr[i]];
    data.sort(isNum
        ? function(a,b){ return a[0]-b[0]; }
        : function(a,b){ return a[0]<b[0] ? -1 : a[0]>b[0] ? 1 : 0; }
    );
    for(var i=0; i<l; ++i) arr[i] = data[i][1];
}
var arr = ["20140615-http://localhost:8080/PROYECTO/upload/ORBTHZK/image_ORBTHZK.gif", "20140617-http://localhost:8080/PROYECTO/upload/ORBITHCITY/image_ORBITHCITY.png", "20140601-http://localhost:8080/PROYECTO/upload/423445/image_423445.gif"];
sortArr(arr, function(str){ return str.split('-')[0]; }, true);

答案 2 :(得分:0)

尽管在这种情况下调用sort()就足够了(请参阅@Paul的回答),您可以轻松创建自己的排序功能:

array.sort(function(a, b) {
    a = a.split('-')[0];
    b = b.split('-')[0];

    if (a > b)
      return 1;
    if (a < b)
      return -1;
    return 0;
});

请参阅JSFiddle上的示例。您可以在MDN上详细了解Array.prototype.sort()