Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
49
rated 0 times [  52] [ 3]  / answers: 1 / hits: 20200  / 10 Years ago, fri, december 12, 2014, 12:00:00

Here is the code:



var collection = [new Date(2014, 11, 25), new Date(2014, 11, 24)];
var d=new Date(2014, 11, 24);

var idx= collection.indexOf(d);


I guess the variable idx should have a value of 1 since it is the second value in the array collection. But it turns out to be -1.



Why is that? Is there any special thing for the JavaScript Date type I need to pay attention?



Here is a snippet:





(function() {

var collection = [new Date(2014, 11, 25), new Date(2014, 11, 24)];
var d = new Date(2014, 11, 24);

var idx1 = collection.indexOf(d);

var intArray = [1, 3, 4, 5];
var idx2 = intArray.indexOf(4);

$('#btnTry1').on('click', function() {
$('#result1').val(idx1);
});

$('#btnTry2').on('click', function() {
$('#result2').val(idx2);
});
})();

<script src=https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js></script>
Index:
<input type=text id=result1 value=>
<button id=btnTry1>Find index in a date array</button>
<br />Index:
<input type=text id=result2 value=>
<button id=btnTry2>Find index in a regular array</button>




More From » date

 Answers
55

Two Objects will never be equal unless you serialise them. Lucky, Date is pretty easy to serialise as an integer.



var collection = [new Date(2014, 11, 25), new Date(2014, 11, 24)],
d = new Date(2014, 11, 24),
idx;

idx = collection.map(Number).indexOf(+d); // 1
// ^^^^^^^^^^^^ ^ serialisation steps

[#68500] Wednesday, December 10, 2014, 10 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
chyanne

Total Points: 208
Total Questions: 120
Total Answers: 110

Location: Colombia
Member since Mon, May 2, 2022
2 Years ago
;