【问题标题】:Javascript get Object property NameJavascript获取对象属性名称
【发布时间】:2014-03-21 17:06:14
【问题描述】:

我传递了以下对象:

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

我希望能够从上面的结构中取出密钥typeA。

这个值每次都可以改变,所以下次它可能是typeB。

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

var theTypeIs = myVar.key();

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

【问题讨论】:

    标签: javascript


    【解决方案1】:

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

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

    【讨论】:

    • 是的,它永远是一个对象,该对象是被调用函数的参数,我只需要告诉'键'是什么,这样我就可以确定对'采取什么行动价值部分。
    【解决方案2】:

    像其他答案一样,您可以通过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。
    【解决方案3】:

    如果你想得到myVar对象的键名,那么你可以使用Object.keys()来达到这个目的。

    var result = Object.keys(myVar); 
    
    alert(result[0]) // result[0] alerts typeA
    

    【讨论】:

    • 返回 ["typeA"] 而不是 "typeA"
    【解决方案4】:

    我也在寻找这个的结果,我最终得到了;

    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
        }

    【讨论】:

      猜你喜欢
      • 2014-09-23
      • 1970-01-01
      • 2018-06-08
      • 1970-01-01
      • 1970-01-01
      • 2017-05-21
      • 2022-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多