开发者问题收集

如何在 Vue JS 中将字符串转换为变量名

2021-10-21
1149

希望你们都做得很好。 我想知道有什么方法可以将字符串转换为变量名?我想将 “minXLabel” 转换为 minXLabel 并在 span 标签内使用它,例如 <span>{{minXLabel}</span> 我有

<div class="placeholder-value">
         <span>{{  inputsArray[index].firstOption || placeholder[index].first}} - </span> 
         <span>{{  inputsArray[index].secondOption || placeholder[index].second}}</span> 
       </div>

输入数组是

inputsArray : [
        { 'firstOption': "minXLabel", 'secondOption': "maxXLabel" },
        { 'firstOption': "minXLabel", 'secondOption': "minYLabel" },
        { 'firstOption': "maxYLabel", 'secondOption': "maxXLabel" },
        { 'firstOption': "maxYLabel", 'secondOption': "minYLabel" }
      ],

我可以使用 <span>{{ minXLabel || placeholder[index].first}} - </span> 手动执行此操作,但因为我想使用不同的键循环输出,所以我需要将该字符串转换为变量名。

1个回答

您可以使用 eval 函数将字符串转换为变量,如下所示

 const inputsArray = [
    { 'firstOption': "minXLabel", 'secondOption': "maxXLabel" },
    { 'firstOption': "minXLabel", 'secondOption': "minYLabel" },
    { 'firstOption': "maxYLabel", 'secondOption': "maxXLabel" },
    { 'firstOption': "maxYLabel", 'secondOption': "minYLabel" }
  ]

  const iterator = inputsArray.values()

  for (let item of iterator) {
    const variableName = eval(item.firstOption);
    console.log(variableName)
  }

但是,这些变量不会被声明,您可以根据需要分配值,例如 inputsArray[index].firstOption || placeholder[index].first ,然后使用该变量。

但是,尝试将已有的值分配给新变量看起来有点多余。对我来说,您的第一种方法是正确的,只需循环遍历数组并在那里呈现信息即可

<div v-for="item in placeholder">
  <div v-for="input in inputsArray" class="placeholder-value">
     <span>{{  input.firstOption || item.first}} - </span> 
     <span>{{  input.secondOption || item.second}}</span> 
  </div>
</div> 
Jorge Cordero
2021-10-21