I have an Array with Moment.js objects in a variable:
JavaScript
x
19
19
1
var feriados = function addFeriados(){
2
feriados = [];
3
4
feriados.push(moment("2016-01-01"));
5
feriados.push(moment("2016-02-08"));
6
feriados.push(moment("2016-02-09"));
7
feriados.push(moment("2016-03-25"));
8
feriados.push(moment("2016-04-21"));
9
feriados.push(moment("2016-05-01"));
10
feriados.push(moment("2016-05-26"));
11
feriados.push(moment("2016-09-07"));
12
feriados.push(moment("2016-10-12"));
13
feriados.push(moment("2016-11-02"));
14
feriados.push(moment("2016-11-15"));
15
feriados.push(moment("2016-12-25"));
16
17
return feriados;
18
}
19
And a function to determinate if a value is in this array:
JavaScript
1
10
10
1
function checkFeriado(data) {
2
var i;
3
for (i = 0; i < allFeriados.length; i++) {
4
if (allFeriados[i] == data) {
5
return true;
6
}
7
}
8
return false;
9
}
10
But even if i pass a moment
object, as checkFeriado(moment("2016-01-01"));
i’m getting false. Whats wrong with my code? Is there a best way to do this?
Entire project have jQuery and Moment.js
Advertisement
Answer
JavaScript
1
4
1
moment("2016-01-01") !== moment("2016-01-01"); //true
2
//just like
3
{a:1} !== {a:1}; //true
4
Javascript objects cannot be compared like this, same with moment’s javascript objects. Moment has its own implementation to check if dates are equal. use isSame
JavaScript
1
3
1
moment('2010-10-20').isSame('2010-10-20'); // true
2
moment('2010-10-20').isSame(moment('2010-10-20')); // true
3
You can also use Array.filter to check this.
I wonder if you meant fearadios = allFeradios()
as in a function call?
allFeradios.length
doesn’t sound right in your example! as it is a function name, so is feradios.
JavaScript
1
24
24
1
var feriados = function addFeriados(){
2
feriados = [];
3
feriados.push(moment("2016-01-01"));
4
feriados.push(moment("2016-02-08"));
5
feriados.push(moment("2016-02-09"));
6
feriados.push(moment("2016-03-25"));
7
feriados.push(moment("2016-04-21"));
8
feriados.push(moment("2016-05-01"));
9
feriados.push(moment("2016-05-26"));
10
feriados.push(moment("2016-09-07"));
11
feriados.push(moment("2016-10-12"));
12
feriados.push(moment("2016-11-02"));
13
feriados.push(moment("2016-11-15"));
14
feriados.push(moment("2016-12-25"));
15
return feriados;
16
} ();
17
function dateInArray(queryDate){
18
return Boolean(feriados.filter(function(date){
19
return date.isSame(queryDate);
20
}).length);
21
// return feriados.some(date => date.isSame(queryDate));
22
}
23
console.log(dateInArray(moment('2016-12-25')));
24
console.log(dateInArray(moment('2016-12-28')));
JavaScript
1
1
1
<script src="http://momentjs.com/downloads/moment.min.js"></script>