Javascript获取对象属性名称

IT技术 javascript
2021-02-12 08:44:20

我传递了以下对象:

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

我希望能够typeA从上述结构中拔出钥匙

此值每次都可以更改,因此下次可以更改typeB

所以我想知道是否有办法让我做类似以下伪代码的事情:

var theTypeIs = myVar.key();

这样当我可以传递这个对象并且我可以拉出对象的第一个值时,在这种情况下它是typeA然后基于它我可以用option1做不同的事情option2

4个回答

如果您确定对象中总是只有一个键,那么您可以使用Object.keys

theTypeIs = Object.keys(myVar)[0];
是的,它始终是一个对象,该对象是被调用函数的参数,我只需要告诉“键”是什么,这样我就可以确定对“值”部分采取什么操作。
2021-04-03 08:44:20

像其他答案一样,您theTypeIs = Object.keys(myVar)[0];可以获得第一个密钥。如果您希望获得更多密钥,则可以使用

Object.keys(myVar).forEach(function(k) {
    if(k === "typeA") {
        // do stuff
    }
    else if (k === "typeB") {
        // do more stuff
    }
    else {
        // do something
    }
});
第二个应该是typeB
2021-03-23 08:44:20

如果您想获取myVar对象的键名,那么您可以Object.keys()用于此目的。

var result = Object.keys(myVar); 

alert(result[0]) // result[0] alerts typeA
这将返回 ["typeA"] 而不是 "typeA"
2021-03-31 08:44:20

我也在寻找为此得到的结果,我最终得到了;

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

对于那些想要结果作为字符串的人:

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

输出: "eu,us,aus"

对于那些想要结果作为数组的人:

Array.from(Object.keys(MyObject))

输出: Array ["eu", "us", "aus"]

对于那些正在寻找“包含”类型方法的人: 作为数字结果:

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

输出: -1

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

输出: 0

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

输出: 3

作为布尔结果:

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

输出: true


在你的情况下;

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
    }