为数组原型添加了新方法

时间:2017-03-26 14:35:05

标签: javascript

    let journal = [..............];
        //need sort by key time
        function sortByStatus(){
          return    journal.sort(function(a, b) {
                return a.fly_status - b.fly_status;
            });
        }

        function sortByTime(){
            return    journal.sort(function(a, b) {
                console.log(  new Date( a.start_datetime).getTime()  );
                return new Date( a.start_datetime).getTime()
 - new Date(  b.start_datetime).getTime();
            });
        }

我该怎么做这个逻辑:

journal.sortByStatus().sortByTime() .....其他一些数组方法?

我可以在我的页面中添加那些只有日期数组而不是所有数组的方法吗?

1 个答案:

答案 0 :(得分:1)

一种方法是定义自己的对象。此示例不允许链接方法,但您可以按顺序调用它们:

let Journal = function(list){
  this.list = list || [];
  
  this.sortByStatus = function(){
    return this.list.sort(function(a, b) {
      return a.fly_status - b.fly_status;
    });
  }

  this.sortByTime = function(){
    return this.list.sort(function(a, b) {
      return new Date( a.start_datetime).getTime() - new Date(  b.start_datetime).getTime();
    });
  }
}

let journal = new Journal([
  {fly_status:50, start_datetime: 5},
  {fly_status:5, start_datetime: 50}
]);

console.log(journal.sortByStatus());
console.log(journal.sortByTime());

为了允许链接,在方法完成后返回对象本身(尽管有排序,你可能只选择一种或另一种):

let Journal = function(list){
  this.list = list || [];
  
  this.sortByStatus = function(){
    list.sort(function(a, b) {
      return a.fly_status - b.fly_status;
    });
    return this;
  }

  this.sortByTime = function(){
    list.sort(function(a, b) {
      return new Date( a.start_datetime).getTime() - new Date(  b.start_datetime).getTime();
    });
    return this;
  }
    
}

let journal = new Journal([
  {fly_status:50, start_datetime: 5},
  {fly_status:5, start_datetime: 50}
]);

console.log(journal.sortByStatus().sortByTime().list);