我在变量中有一个包含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
答案 0 :(得分:5)
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')));
&#13;
<script src="http://momentjs.com/downloads/moment.min.js"></script>
&#13;