使用Javascript将两个变量连接成一个新变量

时间:2019-03-25 05:08:32

标签: javascript jquery json

在我解释我的问题之前,我将在这里放置我的Json代码以方便理解。

{
    "name": "Servers Rotation",
    "version": 1.0,
    "prefix": ".svr",
    "servers": {

        "server1": {
            "svr": "01x",
            "status": 1,
            "type": "all"   
        },
        "server2": {
            "svr": "02p",
            "status": 1,
            "type": "all"   
        },
        "server3": {
            "svr": "03z",
            "status": 1,
            "type": "all"   
        }

    }
}

现在,我正在访问此JSON,并尝试创建一个循环以验证所有服务器(server1,server2,server3)的状态是否与数字1相匹配。

如果server [num]状态等于1,则启用服务器。

$.getJSON("servers.json", function(json) {
    var servers_available = Object.keys(json.servers).length;
    for(i = 1; i <= servers_available; i++) {
        if (json.servers.server+i.status == 1) {
            alert(servers_prefix+i.svr + " enabled!");
        } else {
            alert(servers_prefix+i.svr + " disabled");
        }
    }
});

但是,我收到NaN作为警报响应。

我在做什么错?你能帮助我吗?谢谢。

3 个答案:

答案 0 :(得分:1)

您在这里犯了三个错误:

  • 您正在使用点表示法json.servers.server+i.status。在这里您应该使用Bracket Notation。即json.servers['server'+i].status
  • 您正在使用servers_prefix的{​​{1}}
  • 您正在使用全局变量undefined。您应该先使用i

这是代码

let

您可以通过使用以下简单方法来实现:

  • $.getJSON("servers.json", function(json) { var servers_available = Object.keys(json.servers).length; for(let i = 1; i <= servers_available; i++) { if (json.servers['server'+i].status == 1) { alert(json.servers['server'+i].svr + " enabled!"); } else { alert(json.servers['server'+i].svr + " disabled"); } } }); 上的{li> forEach(),而不是Object.values()
  • 使用参数分解获取值的Object.keys()和status属性
  • 使用三元运算符代替if else语句

svr

答案 1 :(得分:0)

尝试这个

$.getJSON("servers.json", function(json) {
var servers_available = Object.keys(json.servers).length;
for(i = 1; i <= servers_available; i++) {
    if (json.servers["server"+i].status == 1) {
        alert(servers_prefix+i.svr + " enabled!");
    } else {
        alert(servers_prefix+i.svr + " disabled");
    }
}
});

答案 2 :(得分:0)

使用括号符号

var json={
    "name": "Servers Rotation",
    "version": 1.0,
    "prefix": ".svr",
    "servers": {

        "server1": {
            "svr": "01x",
            "status": 1,
            "type": "all"   
        },
        "server2": {
            "svr": "02p",
            "status": 1,
            "type": "all"   
        },
        "server3": {
            "svr": "03z",
            "status": 1,
            "type": "all"   
        }

    }
}

var servers_available = Object.keys(json.servers);
for(i = 1; i <=servers_available.length; i++) {
    
    var a='server'+i;
    if (json.servers[a].status == 1) {
       alert(json.servers[a].svr + " enabled!");
   } else {
       alert(json.servers[a].svr + " disabled");
   }
}