javascript
  • html5
  • 2015-09-04 66 views 0 likes 
    0

    在創建的對象中正確排序時需要幫助。在javascript中排序對象(按編號)

    對象(在for循環):

    var labelD = $("#crpc-page label[for='crpc-" + i + "-date']").text(); 
    var valueD = $("#crpc-" + i + "-date").val(); 
    var labelV = $("#crpc-page label[for='crpc-" + i + "-value']").text(); 
    var valueV = $("#crpc-" + i + "-value").val(); 
    
    console.log("i:" + labelD + " => " + valueD); 
    console.log("i:" + labelV + " => " + valueV); 
    
    dni = Date.parse(valueD); 
    
    var sortowanie = {}; 
    var nr = "numer"; 
    var dataD = "dataD"; 
    var wartosc = "wartosc"; 
    sortowanie[nr] = dni; 
    sortowanie[dataD] = valueD; 
    sortowanie[wartosc] = valueV; 
    all_dates.push(sortowanie); 
    

    排序功能

    function compare(a, b) { 
        if (a.numer < b.numer) return -1; 
        if (a.numer > b.numer) return 1; 
        return 0; 
    } 
    
    all_dates.sort(compare); 
    

    第二替代排序功能:

    function sortElement() { 
        all_dates.sort(function(a, b){ 
         return a.numer-a.numer; 
        }); 
    } 
    sortElement(); 
    

    現在。我的問題是,此功能只排序numer值不是{ ... }內的所有對象。

    例 控制檯回報:

    [ 
        {"numer":1428530400000,"dataD":"04/09/2015","wartosc":"3"}, 
        {"numer":1441058400000,"dataD":"09/01/2015","wartosc":"1"}, 
        {"numer":1441576800000,"dataD":"09/07/2015","wartosc":"2"} 
    ] 
    

    我想recive:

    [ 
        {"numer":1441058400000,"dataD":"09/01/2015","wartosc":"1"}, 
        {"numer":1441576800000,"dataD":"09/07/2015","wartosc":"2"}, 
        {"numer":1428530400000,"dataD":"04/09/2015","wartosc":"3"} 
    ] 
    

    我的腦子燒壞了,我不知道如何將所有的元素交換機內部{}

    謝謝, Fantazy

    +1

    嘗試更換:'回報a.numer-a.numer;' –

    回答

    0
    all_dates.sort(function(a,b){ 
         return b.numer-a.numer; 
    }); 
    

    它是根據你的需要的工作。

    0

    您的日期解析不起作用,因爲它不是一個美國日期。

    而是使用

    var parts = valueD.split("/"); 
    dni = new Date(parts[2],parts[1]-1,parts[0]).getTime(); 
    

    DEMO:

    function compare(a, b) { 
     
        if (a.numer < b.numer) return -1; 
     
        if (a.numer > b.numer) return 1; 
     
        return 0; 
     
    } 
     
    
     
    function getEURTime(str) { 
     
        var parts = str.split("/"); 
     
        return new Date(parts[2],parts[1]-1,parts[0]).getTime(); 
     
    } 
     
    var EUR = [ 
     
        {"dataD":"04/09/2015","wartosc":"3"}, 
     
        {"dataD":"09/01/2015","wartosc":"1"}, 
     
        {"dataD":"09/07/2015","wartosc":"2"} 
     
    ] 
     
    
     
    for (var i=0;i<EUR.length;i++) { 
     
        EUR[i].numer=getEURTime(EUR[i].dataD); 
     
    } 
     
    console.log(EUR.sort(compare))

    相關問題