Как изменить значение переменной в объекте, похожем на массив, в JavaScript?

Как можно изменить значение переменной через массив в объекте? Я попробовал использовать квадратные скобки, но почему-то это не работает. Вот мой код: 

```javascript
let propName = '20';

const info = {
  10: {
    5: {
         [propName]: '50',
    }, 
 },
};
console.log(propName);  // 20
```
  • 24 января 2024 г. 10:09
Ответы на вопрос 2
Из вашего кода видно, что вы создали вложенную структуру объектов и пытаетесь обратиться к свойству с помощью переменной `propName`. Однако в вашем коде не показано, как вы пытались изменить значение.

Если вы хотите изменить значение внутри объекта `info`, используя переменную `propName` как ключ, вот как это можно сделать:

```javascript
let propName = '20';

const info = {
  10: {
    5: {
      [propName]: '50',
    }, 
  },
};

// изменение значения
info[10][5][propName] = 'новое_значение';

console.log(info[10][5][propName]); // 'новое_значение'
```

В этом примере для изменения значения вы должны сначала указать путь к вложенному свойству объекта, используя цепочку из квадратных скобок. Так как `propName` является переменной, содержащей ключ, которому вы хотите присвоить новое значение, все что вам нужно сделать, это указать этот ключ в последних квадратных скобках и присвоить ему новое значение.

Обратите внимание, что свойства объекта, которые начинаются с чисел, объявляются без кавычек и могут быть использованы так, как если бы они были строками, но доступ к ним всегда нужно осуществлять с использованием квадратных скобок, так как точечная запись не позволяет начинать имена свойств с чисел.

Таким образом, `info[10][5][propName]` устанавливает новое значение для свойства с ключом `'20'`, которое находится в объекте `5`, который, в свою очередь, находится в объекте `10` внутри объекта `info`.
Никак, вы чего-то очень странного хотите. Квадратные скобки используются для работы с объектом (получение или изменение значений его свойств), через них никак нельзя изменить значение переменной, которую вы в скобках используете. 
Если вы хотите получить «50», то это делается так: info['10']['5'][propName]
Похожие вопросы