Javascript get Object property Name

72

Ich habe folgendes Objekt übergeben:

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

Ich möchte in der Lage sein, den Schlüssel typeAaus der obigen Struktur herauszuziehen .

Dieser Wert kann sich jedes Mal ändern, also beim nächsten Mal typeB.

Ich würde gerne wissen, ob es für mich eine Möglichkeit gibt, so etwas wie den folgenden Pseudocode zu tun:

var theTypeIs = myVar.key();

Auf diese Weise kann ich, wenn ich dieses Objekt übergeben und den ersten Wert des Objekts herausziehen kann, in diesem Fall typeAund basierend darauf verschiedene Dinge mit option1und tun option2.

user3447415
quelle

Antworten:

131

Wenn Sie sicher sind, dass das Objekt immer genau einen Schlüssel enthält, können Sie Folgendes verwenden Object.keys:

theTypeIs = Object.keys(myVar)[0];
zzzzBov
quelle
Ja, es wird immer ein Objekt sein, das Objekt ist ein Parameter für eine aufgerufene Funktion und ich musste nur sagen, was der 'Schlüssel' war, damit ich bestimmen kann, welche Aktion mit dem 'Vaule'-Teil ausgeführt werden soll.
user3447415
19

Wie bei den anderen Antworten können Sie theTypeIs = Object.keys(myVar)[0];den ersten Schlüssel erhalten. Wenn Sie mehr Schlüssel erwarten, können Sie verwenden

Object.keys(myVar).forEach(function(k) {
    if(k === "typeA") {
        // do stuff
    }
    else if (k === "typeB") {
        // do more stuff
    }
    else {
        // do something
    }
});
Dopplesoldner
quelle
1
zweite sollte wohl sein typeB.
zzzzBov
14

Wenn Sie den Schlüsselnamen des myVarObjekts erhalten möchten, können Sie ihn Object.keys()für diesen Zweck verwenden.

var result = Object.keys(myVar); 

alert(result[0]) // result[0] alerts typeA
Suman Bogati
quelle
3
Dies gibt ["TypA"] nicht "TypA" zurück
Major-Mann
0

Ich war auch auf der Suche nach einem Ergebnis dafür und endete mit;

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

Für diejenigen, die das Ergebnis als Zeichenfolge haben wollten:

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

Ausgabe: "eu,us,aus"

Für diejenigen, die das Ergebnis als Array haben wollten:

Array.from(Object.keys(MyObject))

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

Für diejenigen, die nach einer "enthält" -Typmethode suchen: als numerisches Ergebnis:

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

Ausgabe: -1

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

Ausgabe: 0

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

Ausgabe: 3

als boolesches Ergebnis:

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

Ausgabe: true


In deinem Fall;

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
    }

Berker Yüceer
quelle