1

I am trying to return values from a deeply nested variable, but am running into an undefined error.

I am not sure if it is due to having a dot (.) in the object names, or if my nested loop is the correct approach.

I am able to return the values in data1, but my approach does not work for data2 as it is a javascript object. So I created a loop, which returns top values, but I can't return nested ie. user.givenName.

var data1 = {
  "name": "Jane Doe",
  "users_cred": {
    "user.givenName": {
      "value": "Janette"
    },

    "user.bio": {
      "value": "123"
    }
  }
};

var data2 = [{
    "name": "Jane Doe",
    "users_cred": {
      "user.givenName": {
        "value": "Janette"
      },

      "user.bio": {
        "value": "123"
      }
    }
  },
  {
    "name": "John Citizen",
    "users_cred": {
      "user.givenName": {
        "value": "Jonathan"
      }
    }
  }
];

console.log(typeof data2);

for (let i = 0; i < data2.length; i++) {
  var userName = data2[i].name;
  console.log(userName);

  var userCreds = data2[i].users_cred;
  console.log(userCreds);

  // Not returning this value.
  console.log(userCreds.user.givenName);
}
Michael M.
  • 10,486
  • 9
  • 18
  • 34
  • It is due to the `.` in the name. Use [bracket notation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Member_Operators#Bracket_notation) i.e. `userCreds['user.givenName']` instead – Nick Oct 31 '22 at 02:43

0 Answers0