YAHsaves
YAHsaves

Reputation: 1767

Test if an object exists JavaScript

I can't believe this question would not have been asked before, but I searched as much as I could and couldn't find it so here it goes.

I want to test if a dynamically built JavaScript object exists. However when I test this:

var myObject = {};
var dynamicName = "customName";

if(myObject[dynamicName].object == undefined){
  myObject[dynamicName].object = "something"; // Make an entry in the dynamic object
  alert("The object didn't exist, so we populated it");
}else{
  alert("The object already exist");
}

If the object doesn't exist and I try to run the above code I get an error saying "myObject[dynamicName] is undefined" and all javascript execution halts.

Is there a way to check if this object exists I want without causing such an error?

Upvotes: 3

Views: 9564

Answers (3)

amankkg
amankkg

Reputation: 5061

There is a shorter version, (almost) without clumsy if's

const myObject = {};
const dynamicName = 'customName';

const { [dynamicName]: obj = {} } = myObject;
if (obj.object == null) {
  obj.object = 'something'
  console.log('populated');
} else {
  console.log('existed');
}
myObject[dynamicName] = obj;

console.log(myObject)

Upvotes: 1

user6299088
user6299088

Reputation:

Check typeof == object

var userObject={
"name":"abc",
"kyc":true
};

var dynamicName="name";

if (typeof userObject == 'object' && userObject[dynamicName] != undefined) {
  console.log("UserObject Exists and valid");
}else{
console.log("UserObject does not Exists");
}

Upvotes: 0

Barmar
Barmar

Reputation: 780974

If myObject[dynamicName] doesn't exist, you can't access its properties. Trying to access or assign a property of undefined causes an error.

You need to create the object, then you can create the property

if (myObject && myObject[dynamicName] && myObject[dynamicName].object !== undefined) {
    alert("The object already exists");
} else {
    myObject = myObject || {};
    myObject[dynamicName] = myObject[dynamicName] || {};
    myObject[dynamicName].object = something;
    alert("The object didn't exist, so we populated it");
}

Upvotes: 2

Related Questions