2017-04-19 5 views
1

Ich habe mehrere Objekte in einer JSON formatierte Datei mit dem gleichen String aber unterschiedlichen Werten:Wie deklariert man eine Variable, wenn ihr Wert ein Objekt ist, das mit einer Variablen in JS zusammengesetzt ist?

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

Ich bin in der Lage, die Daten in den Objekten mit getJSON() abzuzurufen:

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

Aber ich habe mehr Objekte und ich möchte nicht die gleichen drei Zeilen für alle von ihnen duplizieren. Ich möchte diese Variablen mydata1mydata2 und mydata3 erstellen, indem Sie eine Funktion mit der Objekt-ID als Eingabe verwenden.

Mein Problem ist, dass ich nicht herausfinden kann, wie man eine Variable erstellt, wenn ihr Wert ein Objekt ist, das aus einer Variablen besteht. Zum Beispiel ist id eine Variable, die zur Auswahl des JSON-Objekts verwendet wird: object_1 oder object_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);  
    }); 

)}, 

Wie kann ich diese Variablen in einer Funktion deklarieren?

Danke,

+0

Was Sie versuchen, nur zu tun mit 'eval()', aber es gibt wirklich keinen Sinn gemacht werden . Verwenden Sie nicht einzelne Variablen, sondern ein Objekt, und konstruieren Sie die Objekteigenschaftsnamen. – Pointy

+1

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

Antwort

1

Verwendung bracket notation Wert von variable Eigenschaftsnamen verweisen:

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