我的用例如下:
FlexboxStyle: {
display: 'flex',
justifyContent: // need a string value like 'flexEnd'
}
我想获取变量名称的字符串值,但有一些限制,不太冗长可能。
我已经知道您可以使用 Object
的 .keys()
方法返回的第一个值来获取现有变量的字符串:
var name = Object.keys({ myVariable })[0]
console.log(name) // 'myVariable'
话虽如此,如果您知道更优雅的方式来完成这部分,我会加入!
以下代码无法正常工作,但可以很好地表达我的需求:
FlexboxStyle: {
...
justifyContent: Object.keys({ flexEnd } || { distanceBetween } || ...)[0]
}
我面临的问题是 { undefined_variable }
会触发错误。并且只定义需要的那个。
对我来说幸运的是,所有这些变量都集中在一个对象 props
中,允许我使用辅助函数。 这是一个解决方法,但我真的在寻找一个漂亮的单行代码解决方案或比以下更好的解决方案:
const helpingFunction = (props, researchedKeys, defaultValue) => {
researchedKeys.forEach(function (key) {
if (props.hasOwnProperty(key)) {
return key
}
})
return defaultValue
}
FlexboxStyle: {
...
justifyContent: helpingFunction(definedVariables, ['flexEnd', 'distanceBetween', ...], 'flexStart')
}
TL:DR;
1。有没有更好/更漂亮的方法来获得以下结果? :
var name = Object.keys({ myVariable })[0] console.log(name) // 'myVariable'
2。有效的类似代码是否可以避免使用帮助功能? :
justifyContent: Object.keys({ flexEnd } || { distanceBetween } || ...)[0]
最佳答案
您不能在代码中使用“变量名”。无论如何,名称是无意义的和静态的。只需使用一个字符串。
但是如果你想检查一个对象中存在几个属性中的哪一个,你可以这样做
['flexEnd', 'distanceBetween', ...].find(name => name in this.props) || 'flexStart'
// ^^^^^^^^^^
// or whatever the object is
关于Javascript:使用 'defined' 谓词将变量名称作为字符串获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54495024/