• 数组对象按时间字符串排序(转载)


    来源:https://blog.csdn.net/qq_41033913/article/details/90754217

    data是数组,里面装了很多对象。way 指定正序反序,pms指定参数

    //var data = sortData(data, "order", "YearAndMonth");//将整个数组所有对象,按照日期排序
    //var xData = arrayObjectDistinctReturnKey(data, 'YearAndMonth'); //然后去重


    var xData0 = arrayObjectDistinctReturnKey(data, 'YearAndMonth'); //先日期去重
    var xData = sortData2(xData0, "order");//仅对日期排序

      //字符串 时间排序 正序、反序
      function sortData(data, way,pms) {
          if (way == "order") {
              return data.sort(function (a, b) {
                  //console.log(a,b);
                  var c = Date.parse(a[pms].replace(/-/g, "/")) - Date.parse(b[pms].replace(/-/g, "/"));
                  //console.log(c, Date.parse(a[pms].replace(/-/g, "/")), Date.parse(b[pms].replace(/-/g, "/")));
                  //这里的time要根据本身的数据来,后面的正则匹配也要根据自己数据来
                  return c;
              });
          } else if (way == "back") {
              return data.sort(function (a, b) {
                  return Date.parse(b[pms].replace(/-/g, "/")) - Date.parse(a[pms].replace(/-/g, "/"));
              });
          }
      }
    
      function sortData2(data, way) {
          if (way == "order") {
              return data.sort(function (a, b) {
                  //console.log(a, b);
                  var c = Date.parse(a.replace(/-/g, "/")) - Date.parse(b.replace(/-/g, "/"));
                  //console.log(c, Date.parse(a.replace(/-/g, "/")), Date.parse(b.replace(/-/g, "/")));
                  //这里的time要根据本身的数据来,后面的正则匹配也要根据自己数据来
                  return c;
              });
          } else if (way == "back") {
              return data.sort(function (a, b) {
                  return Date.parse(b.replace(/-/g, "/")) - Date.parse(a.replace(/-/g, "/"));
              });
          }
    
      }
    

      

    Date.parse(a.replace(/-/g, "/"))  输出的是时间戳, a-b 是两个时间戳相减。

    文档:https://www.w3school.com.cn/js/jsref_sort.asp

    比较函数应该具有两个参数 a 和 b,其返回值如下:

    • 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
    • 若 a 等于 b,则返回 0。
    • 若 a 大于 b,则返回一个大于 0 的值。
    // 对象数组去重 利用对象访问属性的方法,判断对象中是否存key
     function arrayObjectDistinctReturnKey(arr, key) {
         if (!Array.isArray) {
             Array.isArray = function (arg) {
                 return Object.prototype.toString.call(arg) === '[object Array]';
             };
         }
         // console.log('arr', arr)
         var result = []
         
         if (arr != null && Array.isArray(arr) && arr.length > 0) {
             var obj = {}
             for (var i = 0; i < arr.length; i++) {
                 if (arr[i][key]) {
                     if (!obj[arr[i][key]]) {
                         result.push(arr[i][key])
                         obj[arr[i][key]] = true
                     }
                 }
             }
         }
    
    
         // console.log('result', result)
         return result
     }
    

     

      

     

  • 相关阅读:
    python解决线性规划问题
    python解决多变量最优化问题
    python处理单变量优化
    java枚举类常用方法
    java实现十大排序算法
    python解方程
    python科学计算包
    python做微积分
    php定界符<<<EOF讲解
    一键安装LNMP/LAMP
  • 原文地址:https://www.cnblogs.com/hao-1234-1234/p/14269048.html
Copyright © 2020-2023  润新知