2015-11-14 145 views
0

我想排序objects.I的陣列有我的目標日期,我想對象如何對數組中的日期對象進行排序?

我用這個答案來解決我的問題 why array is not sorted in javascript in increasing date or decreasing date?

日期排序,但是,當使用該解決方案也行不通。

我做了一個ajax調用,並從服務器存儲中獲取數據。但是數據是所以很難檢查數據是否排序。

所以我會給你證據表明數據不是排序的。

  • 見對象值爲星期四2014年7月24日
  • 見對象值爲星期一2014年7月28日
  • 見對象值爲週一2015年4月20日
  • 查看對象 value is 週三2013年12月18日

https://jsfiddle.net/rxaLutgn/6/

function sort_by(field, reverse, primer) { 

      var key = primer ? 
       function (x) { 
        return primer(x[field]) 
       } : 
       function (x) { 
        return x[field] 
       }; 

      reverse = !reverse ? 1 : -1; 

      return function (a, b) { 
       a = new Date(key(a)), b = new Date(key(b)); 
       return reverse * (a-b); 
      } 
     } 

對此question.Below回答不工作

回答

0

如果你期待的所有日期的功能工作正常的任何更新。看看你的數據有一些無效的日期,如「 - 」

如果你不能修改數據或總是期待一個確定的日期,那麼你需要修改你的函數來做這樣的事情(或以某種方式處理它根據自己的喜好)

function sort_by(field, reverse, primer) { 

     var key = primer ? 
      function (x) { 
       return primer(x[field]) 
      } : 
      function (x) { 
       return x[field] 
      }; 

     reverse = !reverse ? 1 : -1; 

     return function (a, b) { 
      a = new Date(key(a))=='Invalid Date'?0:new Date(key(a)); 
b = new Date(key(b))=='Invalid Date'?0:new Date(key(b)); 
      return reverse * (a-b); 
     } 
    } 

https://jsfiddle.net/rxaLutgn/21/ < - 以這裏看看在被嚴重排序的對象的插件來限制數據量

+0

它不工作請https://jsfiddle.net/rxaLutgn/12/ – user944513

+0

請提供任何小提琴 – user944513

+0

@ user944513如果你的小提琴被固定在['鍵加回(一)'和'key(b)'](https://jsfiddle.net/rxaLutgn/20/)稱它有效。 – binki

0

這裏是一個可行的解決方案,我不包括底漆像你一樣。但實施它應該很容易。

$.ajax({ 
url: "https://dl.dropboxusercontent.com/s/3v7ya481187k8gf/a.json?dl=0", 
}).done(function(data) { 
    var arr; 
    var _key = "Expected_Payment_Date__c";//"akritiv__Promise_Date__c", 
    var _reverse = true; 
    arr=JSON.parse(data); 
    arr.sort(function(a,b){ 
     var keyA = Date.parse(a[_key]); 
     var keyB = Date.parse(b[_key]); 
     var _rev = _reverse ? -1 : 1; 

     if(keyA < keyB) return _rev * -1; 
     if(keyA > keyB) return _rev * 1; 
     return 0; 
    }); 
    console.log(arr); 
}); 
相關問題