【问题标题】:How to compare two Moment.js Objects如何比较两个 Moment.js 对象
【发布时间】:2017-03-08 22:31:17
【问题描述】:

我在一个变量中有一个包含 Moment.js 对象的数组:

var feriados = function addFeriados(){
            feriados = [];
            ...
            feriados.push(moment("2016-01-01"));
            feriados.push(moment("2016-02-08"));
            feriados.push(moment("2016-02-09"));
            feriados.push(moment("2016-03-25"));
            feriados.push(moment("2016-04-21"));
            feriados.push(moment("2016-05-01"));
            feriados.push(moment("2016-05-26"));
            feriados.push(moment("2016-09-07"));
            feriados.push(moment("2016-10-12"));
            feriados.push(moment("2016-11-02"));
            feriados.push(moment("2016-11-15"));
            feriados.push(moment("2016-12-25"));
            ...
            return feriados;
 } 

还有一个判断一个值是否在这个数组中的函数:

function checkFeriado(data) {
    var i;
    for (i = 0; i < allFeriados.length; i++) {
        if (allFeriados[i] == data) {
        return true;
        }
    }
    return false;
}

但即使我传递了一个moment 对象,因为checkFeriado(moment("2016-01-01")); 我得到了错误。我的代码有什么问题?有没有最好的方法来做到这一点?

整个项目都有 jQuery 和 Moment.js

【问题讨论】:

    标签: javascript arrays datetime comparison momentjs


    【解决方案1】:
    moment("2016-01-01") !== moment("2016-01-01"); //true
    //just like
    {a:1} !== {a:1}; //true
    

    Javascript objects cannot be compared like this,与 moment 的 javascript 对象 相同。 Moment 有自己的实现来检查日期是否相等。使用isSame

    moment('2010-10-20').isSame('2010-10-20'); // true
    moment('2010-10-20').isSame(moment('2010-10-20')); // true
    

    您也可以使用 Array.filter 来检查这一点。

    我想知道你是不是指函数调用中的fearadios = allFeradios()

    allFeradios.length 在您的示例中听起来不正确!因为它是一个函数名,所以 ferradios 也是。

    var feriados = function addFeriados(){
                feriados = [];
                feriados.push(moment("2016-01-01"));
                feriados.push(moment("2016-02-08"));
                feriados.push(moment("2016-02-09"));
                feriados.push(moment("2016-03-25"));
                feriados.push(moment("2016-04-21"));
                feriados.push(moment("2016-05-01"));
                feriados.push(moment("2016-05-26"));
                feriados.push(moment("2016-09-07"));
                feriados.push(moment("2016-10-12"));
                feriados.push(moment("2016-11-02"));
                feriados.push(moment("2016-11-15"));
                feriados.push(moment("2016-12-25"));
                return feriados;
     } ();
    function dateInArray(queryDate){
      return Boolean(feriados.filter(function(date){
         return date.isSame(queryDate);
      }).length);
      // return feriados.some(date => date.isSame(queryDate));
    }
    console.log(dateInArray(moment('2016-12-25')));
    console.log(dateInArray(moment('2016-12-28')));
    &lt;script src="http://momentjs.com/downloads/moment.min.js"&gt;&lt;/script&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多