按日期对三个数组进行排序

时间:2019-01-28 10:15:15

标签: javascript arrays sorting

因此,我得到了三个具有相同元素和长度的数组,但是它们按每个数组的一个属性进行排序的方式不同。

我想显示时间轴中每个数组的每个元素。这样,一个元素就是存在时间不同的树的时间。

我该怎么做?

this.timeLineData = []
let sortedStart = this.sortArray(this.data, '0')
let sortedExce = this.sortArray(this.data, '1')
let sortedEnd = this.sortArray(this.data, '2')

我如何排序:

if (sortType === '0'){
  return myArr.sort((val1, val2)=> {return <any>new Date(val1.date1) - <any>new Date(val2.date1)})
}
else if (sortType === '1'){
  return myArr.sort((val1, val2)=> {return <any>new Date(val1.date2) - <any>new Date(val2.date2)})
}
else if (sortType === '2'){
  return myArr.sort((val1, val2)=> {return <any>new Date(val1.date3) - <any>new Date(val2.date3)})
}

我想要一个输出数组,其中的对象看起来像这样:

class TimeLine {
element: any
date: Date
}

2 个答案:

答案 0 :(得分:0)

这是在Javascript / Typescript中执行此操作的功能性方法,它使用高阶函数创建帮助器,以基于thisdate1或{{1}中的任何一个对数据进行排序和转换}属性。

date2

希望有帮助!

答案 1 :(得分:0)

我也面临同样的问题,并且找到了一种对多维数组中的多列数据进行排序的好方法。

检查以下代码

(function() {
      function deepsort(){
    var i, order= arguments, L= order.length, tem;
    return a.sort(function(a, b){
        i= 0;
      
        while(i < L){
          
            tem= order[i++];
          var res = tem.split("_");
            var ao= a[res[0]] || 0, bo= b[res[0]] || 0;
            if(ao== bo) continue;
           
          if(res[1] == "ASC"){
            return ao > bo? 1: -1;
          }
          if(res[1] == "DESC"){
             return ao < bo? 1: -1;
          }
        }
        return 0;
    });
}

var a= [
    ["2011-10-9", "2011-10-10", "2011-10-11", 21],
    ["2011-10-6", "2011-10-7", "2011-10-8", 11],
    ["2011-10-3", "2011-10-4", "2011-10-5", 20]
];
document.write(deepsort(0+"_ASC",1+"_ASC"));
// for better result view check console log
console.log(deepsort(0+"_ASC",1+"_ASC"))
//console.log(a.deepsort(1))
    
    })();

相关问题