2016-10-26 95 views
0

我有Moment.js对象的阵列中的变量:如何比较两个对象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

回答

3
moment("2016-01-01") !== moment("2016-01-01"); //true 
//just like 
{a:1} !== {a:1}; //true 

Javascript objects cannot be compared like this,同样与片刻的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在您的示例中听起来不正确!因为它是一个函数名,feradios也是。

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); 
 
} 
 
console.log(dateInArray(moment('2016-12-25'))); 
 
console.log(dateInArray(moment('2016-12-28')));
<script src="http://momentjs.com/downloads/moment.min.js"></script>