Изменение содержимого переменной в js

В моем коде 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'?

Это похоже на Проблема XY. Я чувствую, что то, что вы пытаетесь выполнить, может иметь лучший способ, чем это конкретное решение - я хотел бы услышать немного больше контекста.

Tyler Roper 16.07.2018 19:26

Вы ищете массивы.

SLaks 16.07.2018 19:26

array - лучшее решение, но если вы хотите пойти по этому пути, они будут доступны через окно или глобальный объект window ["s1"], но крайне не рекомендуется

sumeet kumar 16.07.2018 19:28

Объект или массив - это то, что нужно. Это должно быть дурак ...

epascarello 16.07.2018 19:28
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
5
103
2

Ответы 2

Самый простой способ, который я могу придумать, - поместить 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';
}

еще проще - это просто массив

epascarello 16.07.2018 19:28

Я согласен. Но это ответ на другой / будущий вопрос :)

Richard Walton 16.07.2018 19:31

Я предлагаю использовать массив вместо отдельных переменных:

var s = [];
for(var i=0; i<9;i++) s[i] = 'n';

function bot() {
  var generateRandomNumber = Math.floor(Math.random() * 9); 
  s[generateRandomNumber] = 'tada';
}

Другие вопросы по теме