Reputation: 140
Unable to access key value pairs in js object. I'm trying to access current day from dayName
but I'm unable to do so. It is showing undefined
when I'm trying to access the dayName
via dayNum
key.
JS
app.get("/", (req, res) => {
let dayName = {
"1" : "Monday",
"2" : "Tuesday",
"3" : "Wednesday",
"4" : "Thursday",
"5" : "Friday",
"6" : "Saturday",
"0" : "Sunday"
}
let today = new Date();
let dayNum = today.getDay().toString();
console.log(dayName.dayNum);
res.render("list", {
day : dayName.dayNum
});
});
EJS
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>To Do List</title>
</head>
<body>
<h1>Today is <%= day %></h1>
</body>
</html>
OUTPUT:
Upvotes: 1
Views: 280
Reputation: 61
app.get("/", (req, res) => {
let dayName = {
"1" : "Monday",
"2" : "Tuesday",
"3" : "Wednesday",
"4" : "Thursday",
"5" : "Friday",
"6" : "Saturday",
"0" : "Sunday"
}
let today = new Date();
let dayNum = today.getDay().toString();
console.log(dayName.dayNum);
res.render("list", {
day : dayName.dayNum
});
});
Upvotes: 0
Reputation: 4770
You should use the square bracket notation. With the dot notation dayName.dayNum
we are looking for the value with key "dayNum"
inside the object and since it does not have any such key, it returns undefined
. If we use the bracket notation, dayNum
will be evaluated to the correct key before object access. See Dot Notation vs. Bracket Notation
res.render("list", {
day : dayName[dayNum]
});
Also I would recommend using an array instead of object for dayName
const dayName = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
Upvotes: 1