代码之家  ›  专栏  ›  技术社区  ›  John V

使用矩(日期)元素对数组进行排序

  •  1
  • John V  · 技术社区  · 6 年前

    我有一个数组,其中填充了矩(数据库提供的日期)元素。我试图对数组进行排序,以便第一个元素是最旧的,最后一个元素是最新的,但没有成功。

         for (let item of items) {
    
                dates.push(moment(item.created));
              }
              dates.sort(function(a,b){
                var da = new Date(a).getTime();
                var db = new Date(b).getTime();
    
                return da < db ? -1 : da > db ? 1 : 0
              });
        }
      console.log(dates);
    

    这将始终打印当前时间乘以元素数。

    1 回复  |  直到 6 年前
        1
  •  18
  •   SysDragon    4 年前

    - 在作为矩实例的操作数上,它们被强制为数字,即自历元值起的毫秒数。因此:

    dates.sort((a, b) => a - b);
    

    …按升序排序(最早的日期优先),然后

    dates.sort((a, b) => b - a);
    

    我很高兴在这里使用了简洁的箭头函数,因为您已经在代码中使用了ES2015+功能。

    let dates = [
      moment("2017-01-12"),
      moment("2018-01-12"),
      moment("2017-07-12"),
      moment("2016-07-30")
    ];
    dates.sort((a, b) => a - b);
    console.log(dates);
    
    dates = [
      moment("2017-01-12"),
      moment("2018-01-12"),
      moment("2017-07-12"),
      moment("2016-07-30")
    ];
    dates.sort((a, b) => b - a);
    console.log(dates);
    .as-console-wrapper {
      max-height: 100% !important;
    }
    The built-in Stack Snippets console shows Moment instances by calling toString, which shows is the ISO date string. But they're Moment instances (you can see that in the browser's real console).
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>