#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, и он работал безупречно. Помечаем проблему как решенную. Спасибо вам всем.