如何获取变量名

时间:2020-02-18 06:49:45

标签: angular typescript

我有一个简单的问题。 如何从此示例获取可变时间的名称:

let x = {
  color: string = red;
}

let y = getVarName(x.color);
console.log(y);

结果:颜色

我怎样才能在上面得到这个结果? getVarName是我要制作的示例函数。

3 个答案:

答案 0 :(得分:1)

正确的问题是如何根据值获取obj 属性的名称。对象不包含变量,仅包含属性。

首先使用You can see sample output here从obj获取键的数组,然后使用Obj.keys()获取与您传入的obj属性值匹配的键:

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            MainContainer()
        }
    }
}

@Preview
@Composable
fun MainContainer() {
    Stack {

        Align(Alignment.TopCenter) {
            Column(arrangement = Arrangement.Center) {
                Container(
                    background(Color.Green),
                    alignment = Alignment.TopCenter,
                    //height = 350.dp,
                    width = 450.dp,
                    expanded = true
                ) {
                    Text("Up")
                }
            }
        }

        Align(alignment = Alignment.BottomCenter) {
            Column(background(Color.Yellow), arrangement = Arrangement.Center) {
                Container(alignment = Alignment.Center, height = 350.dp, width = 450.dp) {
                    Text("Down")
                }
            }
        }

        Align(Alignment.Center) {
            Column(background(Color.White), arrangement = Arrangement.Center) {
                Container(alignment = Alignment.Center, height = 250.dp, width = 250.dp) {
                    Clip(shape = RoundedCornerShape(8.dp)) {
                        LoginContainer()
                    }
                }
            }
        }
    }
}

@Composable
fun LoginContainer() {
    Column {
        Text("Username")
        Text("Password")
        Button("Login")
    }
}

答案 1 :(得分:0)

如果我有您的问题。在打字稿中,如果您真的想通过函数来​​处理,可以执行以下操作。否则,您可以通过x.color

  let x = {
  color : 'red',
  getColor : function(){
    return this.color
  }
}

let y = x.getColor(); 
console.log(y); // output red

工作示例

https://stackblitz.com/edit/typescript-73dpve?embed=1&file=index.ts

如果您想要密钥名称,请尝试

let keys = Object.keys(x).filter(k=>x[k]==='red');

console.log(keys[0]) // output color

从js文档中了解Object.keys()

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

答案 2 :(得分:-1)

您可以在下面使用以获得颜色输出。

let color : string = 'red';
let xp : any = '';
let z = {
   colors : color,
}

let p = getVarName(z.colors);
console.log('colorname: ',p);
function getVarName(xp){
   return xp;
}
console.log('color name: ',z.colors);
let keys = Object.keys(z).filter(k=>z[k]==='red');

console.log('key: ',keys[0])

您可以通过以下链接查看此工作示例: https://stackblitz.com/edit/typescript-73dpve?embed=1&file=index.ts