Reputation: 876
Trying to filter js object listing by displaying only those records with an Expires date greater than or equal to today where today's date is formatted as YYYY.MM.DD
window.members = [
{
LastName: "MacKenzie",
FirstName: "Randy",
Expires: "2019.08.12"
},
{
LastName: "Ahmed",
FirstName: "Jamshed",
Expires: "2017.10.05"
},
{
LastName: "Attaya",
FirstName: "Jim",
Expires: "2018.01.12"
},
];
$(document).ready(function () {
window.members.filter(function (members) {
return members.Expires >= "2017.08.30";
});
var html = "";
for (var i = 0; i < window.members.length; i++) {
html+="<div class='members-name'>";
html+=""+window.members[i].LastName+", ";
html+=""+window.members[i].FirstName+" </div><div class='members-exp'>";
html+=""+window.members[i].Expires+" </div>";
}
$("div").html(html);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="div"></div>
Upvotes: 0
Views: 419
Reputation: 2351
I've added an item to your array with a date that is before today. As you can see in the output, it is filtered out of the array.
window.members = [
{
LastName: "Test",
FirstName: "Test",
Expires: "2015.01.01"
},
{
LastName: "MacKenzie",
FirstName: "Randy",
Expires: "2019.08.12"
},
{
LastName: "Ahmed",
FirstName: "Jamshed",
Expires: "2017.10.05"
},
{
LastName: "Attaya",
FirstName: "Jim",
Expires: "2018.01.12"
},
];
$(document).ready(function () {
// Create a new date object, it will be the current date.
var today = new Date();
// Set all time components to 0 so the date is at midnight.
today.setHours(0, 0, 0, 0);
// Get a new array with only the members that have an expiration date
// that falls on today or later.
var filteredMembers = window.members.filter(function (members) {
return (new Date(members.Expires).getTime() >= today.getTime());
});
// Initialize the string to hold the HTML to add to the DOM.
var html = "";
// Iterate over all the members that passed the filter.
filteredMembers.forEach(member => {
// Add the HTML for the member to the string.
html += `<div class="members-name">${member.LastName}, ${member.FirstName}</div><div class="members-exp">${member.Expires}</div>`;
});
// Assign the constructed string to the div.
$("div").html(html);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="div"></div>
Upvotes: 1
Reputation: 1520
new Date()
returns the date today on your timezone.
var newDate = new Date();
newDate.setHours(0,0,0,0);
for (var i = 0; i < window.members.length; i++) {
var expiresDate = new Date(window.members[i].Expires);
//equality operators require you to use getTime()
if(expiresDate.getTime() >= newDate.getTime()){
html+="<div class='members-name'>";
html+=""+window.members[i].LastName+", ";
html+=""+window.members[i].FirstName+" </div><div class='members-exp'>";
html+=""+window.members[i].Expires+" </div>";
}
}
Upvotes: 0