Javascript get Object property Name

Javascript

Javascript Problem Overview


I passed the following object:

var myVar = { typeA: { option1: "one", option2: "two" } }

I want to be able to pull out the key typeA from the above structure.

This value can change each time so next time it could be typeB.

So I would like to know if there is a way for me to do something like the following pseudo code:

var theTypeIs = myVar.key();

This way when I can pass this object and I can pull out the first value of the object, in this case it is typeA and then based on that I can do different things with option1 and option2.

Javascript Solutions


Solution 1 - Javascript

If you know for sure that there's always going to be exactly one key in the object, then you can use Object.keys:

theTypeIs = Object.keys(myVar)[0];

Solution 2 - Javascript

Like the other answers you can do theTypeIs = Object.keys(myVar)[0]; to get the first key. If you are expecting more keys, you can use

Object.keys(myVar).forEach(function(k) {
    if(k === "typeA") {
        // do stuff
    }
    else if (k === "typeB") {
        // do more stuff
    }
    else {
        // do something
    }
});

Solution 3 - Javascript

If you want to get the key name of myVar object then you can use Object.keys() for this purpose.

var result = Object.keys(myVar); 

alert(result[0]) // result[0] alerts typeA

Solution 4 - Javascript

I was searching to get a result for this either and I ended up with;

const MyObject = {
  	SubObject: {
		'eu': [0, "asd", true, undefined],
		'us': [0, "asd", false, null],
		'aus': [0, "asd", false, 0]
	}
};

For those who wanted the result as a string:

Object.keys(MyObject.SubObject).toString()

output: "eu,us,aus"

For those who wanted the result as an array:

Array.from(Object.keys(MyObject))

output: Array ["eu", "us", "aus"]

For those who are looking for a "contains" type method: as numeric result:

console.log(Object.keys(MyObject.SubObject).indexOf("k"));

output: -1

console.log(Object.keys(MyObject.SubObject).indexOf("eu"));

output: 0

console.log(Object.keys(MyObject.SubObject).indexOf("us"));

output: 3

as boolean result:

console.log(Object.keys(MyObject.SubObject).includes("eu"));

output: true


In your case;

var myVar = { typeA: { option1: "one", option2: "two" } }

    // Example 1
    console.log(Object.keys(myVar.typeA).toString()); // Result: "option1, option2"

    // Example 2
    console.log(Array.from(Object.keys(myVar.typeA))); // Result: Array ["option1", "option2" ]
    
    // Example 3 as numeric
    console.log((Object.keys(myVar.typeA).indexOf("option1")>=0)?'Exist!':'Does not exist!'); // Result: Exist!
    
    // Example 3 as boolean
    console.log(Object.keys(myVar.typeA).includes("option2")); // Result: True!
    
    // if you would like to know about SubObjects
    for(var key in myVar){
      // do smt with SubObject
      console.log(key); // Result: typeA
    }

    // if you already know your "SubObject"
    for(var key in myVar.typeA){
      // do smt with option1, option2
      console.log(key); // Result: option1 // Result: option2
    }

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser3447415View Question on Stackoverflow
Solution 1 - JavascriptzzzzBovView Answer on Stackoverflow
Solution 2 - JavascriptdopplesoldnerView Answer on Stackoverflow
Solution 3 - JavascriptSuman BogatiView Answer on Stackoverflow
Solution 4 - JavascriptBerker YüceerView Answer on Stackoverflow