I have a function that sorts courses (divs) based on an end date that is declared in a data attribute. The entire list of classes is sorting correct except one. I cannot figure out why it is not sorting it correctly. The March 24th is the first one in the sorted list.
I am guessing it is only looking at the "2" in "24" but I am not sure how to get around this, if it is the case.
HTML
<button onClick="courseSort()">SORT</button>
<div id="course-container" class="row pb-5 pt-5">
<div class="class-item col-12 col-md-6 pb-4" data-class-start="1/1/2022" data-class-end="5/28/2022">
<h5>May 28</h5>
</div>
<div class="class-item col-12 col-md-6 pb-4" data-class-start="2/8/2022" data-class-end="3/9/2022">
<h5>Mar 9</h5>
</div>
<div class="class-item col-12 col-md-6 pb-4" data-class-start="1/1/2022" data-class-end="3/5/2022">
<h5>Mar 5</h5>
</div>
<div class="class-item col-12 col-md-6 pb-4" data-class-start="1/1/2022" data-class-end="4/1/2022">
<h5>Apr 1</h5>
</div>
<div class="class-item col-12 col-md-6 pb-4" data-class-start="2/19/2022" data-class-end="3/8/2022">
<h5>Mar 8</h5>
</div>
<div class="class-item col-12 col-md-6 pb-4" data-class-start="2/19/2022" data-class-end="3/24/2022">
<h5>Mar 24</h5>
</div>
<div class="class-item col-12 col-md-6 pb-4" data-class-start="1/1/2022" data-class-end="4/23/2022">
<h5>Apr 23</h5>
</div>
<div class="class-item col-12 col-md-6 pb-4" data-class-start="1/1/2022" data-class-end="4/30/2022">
<h5>Apr 30</h5>
</div>
</div>
JS
function sorter(a, b) {
if (a.dataset.classEnd < b.dataset.classEnd)
return -1;
if (a.dataset.classEnd > b.dataset.classEnd)
return 1;
return 0;
}
// Function to sort Data
function courseSort() {
var course = document.querySelectorAll("[data-class-end]");
var courseArray = Array.from(course);
let sorted = courseArray.sort(sorter);
sorted.forEach(e =>
document.querySelector("#course-container").appendChild(e));
}
Thanks