当一个变量的值是一个由JS中的变量组成的对象时,如何声明它?

时间:2017-04-19 14:39:55

标签: javascript

我在JSON格式的文件中有几个对象,它们具有相同的字符串但值不同:

{
    "object_1": {
        "data1": [1, -1],
        "data2": [2, -1],
        "data3": [3, -1],
    },
    "object_2": {
        "data1": [4, -1]
        "data2": [5, -1],
        "data3": [6, -1],
    }
}

我可以使用getJSON()检索对象中的数据:

var url = "https://website.com/file.json";
$.getJSON(url, function (json) {
    var mydata1 = json.object_1.data1; 
    var mydata2 = json.object_1.data2; 
    var mydata3 = json.object_1.data3; 
});

但我有几个对象,我不想为所有这些对象重复相同的三行。我想通过使用对象id作为输入的函数来创建这些变量mydata1 mydata2mydata3

我的问题是,当它的值是由变量组成的对象时,我无法弄清楚如何创建变量。例如,此处id是用于选择JSON对象的变量:object_1object_2

$.getJSON(url, function (json) {

    var id = 1 // use id = 1 on page load

    function loadJSON(id) {

        // all these declaration fail
        eval("var mydata1 = string.concat('json.object_', id, '.data1')"); 
        var mydata1 = string.concat("json.object_", id, ".data1");  
        var mydata1 = window["json.object_" + id + ".data1"];
    );

    // then rewrite the data on click

    $('#button_2').click(function () { 
        loadJSON(2);    
    });     
    $('#button_1').click(function () {    
        loadJSON(1);    
    });

)},

如何在函数中声明这些变量?

谢谢,

1 个答案:

答案 0 :(得分:1)

使用bracket notation按变量属性名称引用值:

var mydata1 = json['object_' + id].data1;