В моем коде javascript 9 переменных.
s1 = 'n';
s2 = 'n';
s3 = 'n';
s4 = 'n';
s5 = 'n';
s6 = 'n';
s7 = 'n';
s8 = 'n';
s9 = 'n';
Я создал функцию, которая случайным образом выбирает число от 1 до 9.
function bot() {
var generateRandomNumber = Math.floor(Math.random() * 9) + 1;
console.info(generateRandomNumber);
}
Как это сделать в этой функции, чтобы она заменила содержимое переменной s+generateRandomNumber = 'x'?
Вы ищете массивы.
Возможный дубликат Получить глобальную переменную динамически по строке имени в JavaScript или Как получить локальную переменную по имени в JS? или Как я могу получить доступ к локальной области динамически в javascript
array - лучшее решение, но если вы хотите пойти по этому пути, они будут доступны через окно или глобальный объект window ["s1"], но крайне не рекомендуется
Объект или массив - это то, что нужно. Это должно быть дурак ...



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Самый простой способ, который я могу придумать, - поместить 9 переменных в объект, например:
var variables = {
s1: 'n',
s2: 'n',
... and so on
}
Затем вы можете изменить свою функцию bot, чтобы обновить переменную, используя синтаксис []:
function bot() {
var generateRandomNumber = Math.floor(Math.random() * 9) + 1;
variables['s' + generateRandomNumber] = 'some new value';
}
еще проще - это просто массив
Я согласен. Но это ответ на другой / будущий вопрос :)
Я предлагаю использовать массив вместо отдельных переменных:
var s = [];
for(var i=0; i<9;i++) s[i] = 'n';
function bot() {
var generateRandomNumber = Math.floor(Math.random() * 9);
s[generateRandomNumber] = 'tada';
}
Это похоже на Проблема XY. Я чувствую, что то, что вы пытаетесь выполнить, может иметь лучший способ, чем это конкретное решение - я хотел бы услышать немного больше контекста.