我有一个简单的问题。 如何从此示例获取可变时间的名称:
let x = {
color: string = red;
}
let y = getVarName(x.color);
console.log(y);
结果:颜色
我怎样才能在上面得到这个结果? getVarName是我要制作的示例函数。
答案 0 :(得分:1)
正确的问题是如何根据值获取obj 属性的名称。对象不包含变量,仅包含属性。
首先使用从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