2012-11-01 13 views
5

Mam funkcję, w której otrzymuję JSON, a następnie wyodrębniam pierwszy element, oparty na pewnych informacjach w literale obiektu.Javascript literal obiektu. object [i] .variable

Mój problem jest:

function foo(string){ 
return data[0].string; 
} 

To nie działa. Jaka jest prawidłowa składnia?

pełny kod jest:

var plantaVariables = { 
    humidity : 0, 
    airTemp : 0, 
    soilTemp : 0, 
    soilMoisture: 0, 
    light: 0 
    }; 

    function capitaliseFirstLetter(string){ 
    return string.charAt(0).toUpperCase() + string.slice(1); 
    } 

    for (var i in plantaVariables) { 
    $.ajax({ 
     url: "http://xxx/"+i.toLowerCase(), 
     dataType:"json", 
     async: false, 
     success: function(data){ 
     var string = capitaliseFirstLetter(i); 
     plantaVariables[i] = parseInt(data[0].capitaliseFirstLetter(i)); 
     } 
     }); 
    }; 

JSON ja dostać wygląda następująco:

[{"PlantId":"1","DateTime":"2012-11-01 13:56:23","Humidity":"37.4"}] 

(z większą liczbą obiektów). I podobne do każdego innego elementu w roślinie Zmienne

Zdaję sobie sprawę, że jest to pytanie początkujących, ale jestem nowy w javascript, a ja cały czas uderzałem głową o ekran. Każda pomoc będzie bardzo ceniona!

+0

'return data [0] [string]' Użyj '[]' zamiast '.'. –

Odpowiedz

6

Należy użyć notacji indeksie patrzeć atrybut obiektu przez wyrażenie:

plantaVariables[i] = parseInt(data[0][capitaliseFirstLetter(i)]); 
+0

Dziękujemy! mój dzień! – Cobradelaplaya

1

Pamiętaj, przedmioty można odwoływać się za pomocą [], podobnie jak tablice.

var string = capitaliseFirstLetter(i); 
plantaVariables[i] = parseInt(data[0][string]); 
+0

Dziękujemy! znakomity – Cobradelaplaya

+0

Nie ma za co :-) –

Powiązane problemy