【问题标题】:Test ascending Javascript array of Date objects测试 Date 对象的升序 Javascript 数组
【发布时间】:2009-12-23 16:01:11
【问题描述】:

我有一个 Date 对象的 javascript 数组,我想对其进行 测试 的升序。这是我建造的,但我对它有点失望。有什么建议吗?

function isAscending(timeLine) {
  if (timeLine.length < 2)
    return true;

  for(var i=1; i < timeLine.length; i++) {
    if(timeLine[i-1] > timeLine[i])
      return false;
  }
  return true;   
}     

(我希望有一些更具表现力、内置的、一些库数学函数等)

【问题讨论】:

  • 我责怪 LINQ 让人们认为如果代码可读和可理解,那么它就有问题;-)

标签: javascript arrays date


【解决方案1】:

这是最简单的方法;不要失望。

【讨论】:

    【解决方案2】:

    怎么样

    function isAscending(timeLine){
        var i=0, L= timeLine.length-1;
        while(i<L){
            if(timeLine[i]> timeLine[++i]) return false;
        }
        return true;
    }
    

    【讨论】:

    • 它只读取一次数组的长度,而不是每次通过循环。它为一个成员的数组保存了一个单独的测试。
    • 这确实是我自己做的“优化”版本。可读性较差,复杂度仍为 O(N)(因此没有令人印象深刻的好处)。但无论如何感谢您的努力。
    【解决方案3】:

    es6方式

    let isAscending = timeLine => 
        timeLine.every( (v, i, a) => a.length - 1 === i || v < a[i + 1] )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-12
      • 1970-01-01
      • 1970-01-01
      • 2013-06-21
      • 2022-01-23
      • 1970-01-01
      相关资源
      最近更新 更多