Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:使用';定义为';谓语 我的用例如下所示:_Javascript - Fatal编程技术网

Javascript:使用';定义为';谓语 我的用例如下所示:

Javascript:使用';定义为';谓语 我的用例如下所示:,javascript,Javascript,我想获取变量名称的字符串值,但有一些限制,可以使用更详细的 我已经知道,可以使用对象的.keys()方法返回的第一个值来获取现有变量的字符串: var name = Object.keys({ myVariable })[0] console.log(name) // 'myVariable' 这么说吧,如果你知道一个更优雅的方式来做这一部分,我加入 以下代码不起作用,但它是表达我的需求的好方法: FlexboxStyle: { ... justifyContent: 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.有没有更好/更漂亮的方法来获得以下结果 2.使用类似代码是否可以避免使用帮助功能 在代码中不能使用“变量名”。不管怎样,名字都是毫无意义和静态的。只要用一根绳子

但是,如果您想检查对象中存在的几个属性中的哪一个,只需执行以下操作即可

['flexEnd', 'distanceBetween', ...].find(name => name in this.props) || 'flexStart'
//                                                       ^^^^^^^^^^
//                                                       or whatever the object is

使用Object.keys获取一个键数组,并将其与researchedkeys-array1.filter(value=>-1!==array2.indexOf(value))相交;是一种方法,您可以使用Array.prototype为此创建.intersect函数。。。然后像以前一样用[0]抓取第一个?
var name = Object.keys({ myVariable })[0]

console.log(name) // 'myVariable'
justifyContent: Object.keys({ flexEnd } || { distanceBetween } || ...)[0]
['flexEnd', 'distanceBetween', ...].find(name => name in this.props) || 'flexStart'
//                                                       ^^^^^^^^^^
//                                                       or whatever the object is