2016-10-26 94 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>