如何在javascript中的JSON对象声明中跳过或将参数传递到子节点中

问题描述 投票:1回答:2

很抱歉,您是JSON的菜鸟。我有一个要传递给调用JSON对象的参数。JSON:

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

上面,第二个节点test是动态的,具体取决于您所处的环境。我想传递一个参数值,以便可以根据您的声明更改键(上面没有使用任何数组,这是我不能更改的第三方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中的值。我包含了通配符*,但它不起作用。

javascript jquery arrays json maps
2个回答
2
投票

您可以使用方括号参数化环境:

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
投票

您可以使用for .. in循环遍历body.environments的嵌套元素,并检查on是否为true,像这样:

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

for(let b in body.environments) {
  if(body.environments[b].on) {
    console.log(body.environments[b].on);
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.