簡體   English   中英

Javascript獲取對象屬性

[英]Javascript getting object properties

我想最后創建一個google.Visualization.DataTable ,以顯示一個圖形。 現在,我有以下問題:

這是我的代碼,用於從JSON-string獲取Object並列出屬性:

var jsonData = <?php echo "'". $jsonTable. "'"; ?>;
var parsed = JSON.parse(jsonData);

var sensors = [];

for (var x in parsed){
    sensors.push(parsed[x]);
}
var text ="";
for (var sensor in sensors){
    if (sensors.hasOwnProperty(sensor)){
        var measures = sensors[sensor];
        text += ('\r\n' + sensor);
        for (var time in measures){
            if(measures.hasOwnProperty(time)){
                text += ('\r\n' + time + " = " + measures[time]);
            }
        }
    }
}

$(document.getElementById('chart_div')).text(text);

我的jsonData看起來像這樣:

    jsonData = '{"sensor1":
                  {"Date(2016,1,08,10,30,03)":19.187,
                   "Date(2016,1,08,10,00,02)":18.937[,...]},
                 "sensor2":
                  {"Date(2016,1,08,10,30,04)":18.687,
                   "Date(2016,1,08,10,00,03)":18.437[,...]}
                [,...]}'

我的問題是我沒有在循環中得到值“ sensor1”,“ sensor2”等。 text += ('\\r\\n' + sensor); 只返回sensors-object sensor-objectindex

如何獲取傳感器名稱而不是索引?

如何獲取傳感器名稱而不是索引?

您需要在第一個循環中使用屬性名稱進行操作。

目前,您正在獲取屬性名稱( sensor1 ),使用它來獲取值( {"Date... ),然后將該值放入數組中,同時丟棄該屬性名稱。

最簡單的選擇是完全擺脫第一個循環,並在第二個循環中使用parsed而不是sensors來工作。

一種簡單的解決方法

刪除無var sensors = [];

查找sensors並替換為parsed

代碼

for (var sensor in parsed){
if (parsed.hasOwnProperty(sensor)){
    var measures = parsed[sensor];
    text += ('\r\n' + sensor);
    console.log(parsed);
    for (var time in measures){
        if(measures.hasOwnProperty(time)){
            text += ('\r\n' + time + " = " + measures[time]);
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM