Как в JS правильно обращаться к свойству объекта, если его значение есть только в строчном типе данных?
В HTML есть несколько <select/>, по изменению <option/> которых, через someFunction() передаётся значение:
<select onchange="someFunction('item1')"></select>
<select onchange="someFunction('item2')"></select>
В функции someFunction() происходит обращение к свойству объекта someObject:
function someFunction(selectNumber) {
let someData = someObject.selectNumber;
// много-много преобразований данных
}
В объекте someObject данные сгруппированы по селектам: первому селекту соответствуют someObject.item1, второму - someObject.item2:
let someObject = {
'item1': {
// много-много вложенных данных
},
'item2': {
// много-много вложенных данных
},
}
Но такая запись не работает, поскольку selectNumber - строчный:
let someData = someObject.selectNumber;
Вопрос:
- как в
someFunction()нужно преобразовать передаваемый в неё параметр и / или - какие типы данных должны быть у свойств
someObject
чтобы в переменную someData попали данные из someObject.item1 или someObject.item2?
Конечно, можно решить задачу через условие, где-то следующим образом:
function someFunction(selectNumber) {
if (selectNumber === 'item1') {
let someData = someObject.item1
} else if (selectNumber === 'item2') {
let someData = someObject.item2
}
// много-много преобразований данных
}
Но явно же решение не изящное и не профессиональное.
Ответы (1 шт):
Автор решения: vsemozhebuty
→ Ссылка
Нужно использовать скобочную нотацию:
function someFunction(selectNumber) {
let someData = someObject[selectNumber];
// много-много преобразований данных
}