【问题标题】:Conditional statement inside a Math.min or a Math.max in JavaScriptJavaScript 中 Math.min 或 Math.max 中的条件语句
【发布时间】:2017-01-17 22:06:52
【问题描述】:

我想要 Math.min 几个 Date 值(例如 var1.getTime()、var2.getTime() 和 var3.getTime())。但是,在我可以对它们使用 .getTime() 之前,我需要确保它们存在(这样脚本就不会崩溃)。

如果其中一个变量不存在,我仍然想获取其他存在的变量的 Math.min。

有什么线索吗?

【问题讨论】:

  • 将您的日期值放入一个数组中,然后按照 ^ 问题。
  • 如果它们都不存在会怎样?
  • @Mike C 是的,但是在将它们放入数组之前如何确保它们存在?因为,如果其中之一不存在 .getTime() 将使脚本崩溃。以及如何在 Math.min 他们之前 .getTime() 他们?
  • @ScottSauyet 行为应该是什么都没有发生。

标签: javascript date max conditional min


【解决方案1】:

如果您将日期变量存储在数组中,您可以使用filter 删除非Date 对象并将其传递给Math.min.applyMath.max.apply

const dates = [var1, var2, var3];
const min = Math.min(...dates.filter(date => date instanceof Date));

或非 ECMAScript 6:

var dates = [var1, var2, var3];
var min = Math.min.apply(null, dates.filter(function(date) {
  return date instanceof Date;
}));

【讨论】:

  • 是的,但是您仍然需要 .getTime() 才能将它们 Math.min 吗?你是怎么做到的?
  • 不,你不知道,当对日期执行数学运算时,日期会隐式转换为数字(它们的时间戳值):+new Date()
  • @RobM。我看到你更新了 es6 代码。我们是否也应该更新非 es6 代码?谢谢
  • @Emilio,不,es6 不需要 .apply 因为扩展运算符,在 es6 之前 .apply 是实现此目的的方法
  • 很好的答案!我只想在您的答案中添加一个“新日期”,以便取回日期值。所以,对于非 es6,var dates = [var1, var2, var3]; var min = new Date(Math.min.apply(null, dates.filter(function(date) { return date instanceof Date; })));
猜你喜欢
  • 2019-07-20
  • 2020-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-31
  • 2011-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多