Nabeel Ahmed
Nabeel Ahmed

Reputation: 140

Unable to access key value pairs in js object

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:

console output

browser output

Upvotes: 1

Views: 280

Answers (2)

tabish munir
tabish munir

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

Abito Prakash
Abito Prakash

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

Related Questions