Выберите переменную / объект по имени из множества доступных с Javascript - PullRequest
1 голос
/ 02 августа 2020

У меня много объектов (глобальных):

let JohnA = {some data};
let GeorgeA = {some data};
...

Теперь я хочу выбрать объект по его имени в этом контексте:

....
var randomselected = "John";
var result = obj.countries[key]['dataform'];
....

Здесь вместо obj. Мне нужно что-то вроде:

var result = randomselected+"A".countries[key]['dataform'];

Итак, он работает так же, как:

var result = JohnA.countries[key]['dataform'];

Ответы [ 2 ]

1 голос
/ 02 августа 2020

JavaScript не даст вам список объявленных переменных и их имен, поэтому то, что вы пытаетесь сделать, не будет работать с простыми переменными, если вы не используете eval, как в ответе Маджеда, но я не Я рекомендую это - использование eval обычно не рекомендуется, потому что в зависимости от вашего кода это может открыть вам уязвимости в системе безопасности.

Вместо этого вы могли бы сохранить JohnA и GeorgeA как свойства объекта вот так:

let names = {
  JohnA: { countries: ... },
  GeorgeA: { countries: ... } 
}

, а затем вы можете программно получить доступ к этим свойствам:

let name = 'John';
names[name + 'A'].countries // ...
1 голос
/ 02 августа 2020

Вы можете использовать eval. Вот простой пример:

let JohnA = {name:"John"};
let p = "John";
let name = eval(`${p}A`).name;
console.log(name);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...