2017-04-19 47 views
1

我有一個JSON格式文件的幾個對象有相同的字符串,但不同的值:如何聲明一個變量的值是一個由JS中的變量組成的對象?

{ 
    "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; 
}); 

但我有幾個對象,我不想爲它們重複相同的三行。我想創建這些變量mydata1mydata2mydata3通過使用與對象id作爲輸入的函數。

我的問題是,我不知道如何創建一個變量,當它的值是一個變量組成的對象。例如,這裏的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);  
    }); 

)}, 

如何在函數中聲明這些變量?

謝謝

+0

什麼,你現在要做的只能用'的eval()'完成,但真的沒有點。不要使用單個變量,而要使用對象並構造對象屬性名稱。 – Pointy

+1

'json ['object _'+ id] .data1' ... –

回答

1

使用bracket notation可變屬性名來引用值:

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