Как пропустить или передать параметр в дочерний узел в JSON объявлении объекта в javascript - PullRequest
1 голос
/ 06 апреля 2020

Извините за то, что я нуб на JSON. У меня есть параметр, который я хочу передать в вызов объекта JSON. JSON:

{
 "environments":{
  "test":{
   "on":true
  }
 }
}

На вышеупомянутом 2-м узле test является динамическим c в зависимости от среды, в которой вы находитесь. Я хотел бы передать значение параметра, чтобы ключ мог меняться в зависимости от вашего объявления (выше не использовались массивы, и это сторонний API, который я не могу изменить).

Код:

const envName = 'test' // This can be changed to 'uat' too
if(body.environments.test.on === true) //I need the 'test' to change or parameterised.
{
// Do something
}

По сути, я хотел бы пропустить ключ 'test' или передать значение из envName. Я включил подстановочный знак *, и он не работал.

Ответы [ 2 ]

2 голосов
/ 06 апреля 2020

Вы можете использовать квадратные скобки для параметризации среды:

let body = {
 "environments":{
  "uat":{
   "on":true
  }
 }
}

const envName = 'uat';
if(body.environments[envName].on === true)
{
   console.log('true');
}

или Object.values() для создания сценария с подстановочными знаками:

let body = {
 "environments":{
  "uat":{
   "on":true
  }
 }
}

const envName = 'uat';
if(Object.values(body.environments).some(x => x.on === true))
{
   console.log('true');
}
1 голос
/ 06 апреля 2020

Вы можете использовать от for .. in l oop до go через вложенные элементы body.environments и проверить, является ли значение true или нет так:

const body = {
 "environments":{
  "test":{
   "on":true
  }
 }
}

for(let b in body.environments) {
  if(body.environments[b].on) {
    console.log(body.environments[b].on);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...