Javascript: использование строки в качестве имени переменной в коде

#javascript #string #variables

#javascript #строка #переменные

Вопрос:

Я пишу код JavaScript, который имеет цикл. В цикле есть оператор: foo = foo 1. ; Я хочу, чтобы код обрабатывал foo как другую переменную при каждом запуске цикла. Например:

 first loop -->  env.x = env.x   2.0 ;
second loop --> env.y = env.y  2.0 ;
third loop -->  env.z = env.z   2.0 ; 
  

Я просмотрел другие опубликованные решения, такие как использование функций eval() и window(), но все еще не могу понять, как это сделать.

ОБНОВЛЕНИЕ: чтобы лучше понять мою проблему, я публикую часть кода:

 if (profile.xChaos.toFixed(0) > 500.) {
                               
if (profile.param1 == 2.0) { 
profile.param1 = 0.25 ;
profile.param2  = 0.25 ;
console.log('Reset. param1 ='   profile.param1   '; param2 increment = ' profile.param2);
}
else{profile.param1  = 0.25 ;}
profile.gui.updateDisplay({verbose : false}) ;
}
  

Я хотел бы реализовать это таким образом, чтобы код эффективно выполнял эти строки как:

 if (profile.xChaos.toFixed(0) > 500.) {
                               
if (profile.x == 2.0) { 
profile.x = 0.25 ;
profile.y  = 0.25 ;
console.log('Reset. x ='   profile.x   '; y increment = ' profile.y);
}
else{profile.x  = 0.25 ;}
profile.gui.updateDisplay({verbose : false}) ;
}
  

где x,y могут быть выбраны из набора переменных {profile.a, profile.b, profile.c . . .}. Надеюсь, это прояснит ситуацию. Спасибо.

Комментарии:

1. Вместо этого используйте объект, не используйте переменные.

Ответ №1:

Создайте массив имен свойств, затем выполните итерацию по этому:

 const keys = ['x', 'y', 'z'];
for (const key of keys) {
  env[key] = env[key]   2.0;
}
  

Комментарии:

1. Спасибо за решение. Однако у меня есть сложный фрагмент кода внутри «для». Я ищу решение, в котором я мог бы использовать небольшие имена переменных, такие как var1 и var2, а затем просто установить var1 и var2, которые действуют как env.x или env.y или env.z по мере необходимости.

2. Как правило, когда у вас есть вопрос, вы должны опубликовать свой фактический код , а не псевдокод — таким образом, вы можете получить полезные ответы. Можете ли вы опубликовать свой фактический код?

3. Для ясности опубликуйте некоторый фактический код, но обычно минимальное воспроизведение проблемы, с которой вы столкнулись.

4. Я использовал метод, указанный @CertainPerformance, и он работал безупречно. Помечаем проблему как решенную. Спасибо вам всем.