2012-11-01 14 views
5

Ich habe eine Funktion, wo ich einige JSON, und dann das erste Element, basierend auf einigen Informationen in einem Objekt Literal extrahieren.Javascript Objektliteral. Objekt [i] .variable

Mein Problem ist:

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

Dies funktioniert nicht. Was ist die korrekte Syntax?

Der vollständige Code ist:

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

Die JSON i erhalten wie folgt aussieht:

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

(mit mehr Objekte). Und ähnlich für jedes andere Element in der plantaVariables

Ich realisiere, dass dies eine neue Frage ist, aber ich bin neu in Javascript, und ich habe meinen Kopf den ganzen Tag gegen den Bildschirm knallte. Jede Hilfe würde sehr geschätzt werden!

+0

'return data [0] [string]' Verwenden Sie '[]' anstelle von '.'. –

Antwort

6

sollten Sie die Index-Notation verwenden, um ein Objekt Attribut durch den Ausdruck nachschlagen:

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

Danke! meinen Tag gerettet! – Cobradelaplaya

1

Denken Sie daran, können Objekte referenziert werden [] verwenden, wie Arrays.

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

Danke! ausgezeichnet – Cobradelaplaya

+0

Gern geschehen :-) –

Verwandte Themen