2016-08-09 259 views
0

爲什麼console.log(JSON.stringify(row.data))返回undefined以及如何解決?爲什麼JSON.stringify返回undefined

https://jsfiddle.net/ys6j038q/3/

var data = '{"data":{"time":"2016-08-08T15:13:19.605234Z","x":20,"y":30}}{"data":{"time":"2016-08-08T15:13:19.609522Z","x":30,"y":40}}'; 

      var sanitized = '[' + data.replace(/}{/g, '},{') + ']'; 
      var rows = JSON.parse(sanitized); 
    console.log(rows); 

    for(var row in rows){ 
    console.log(JSON.stringify(row.data)); 
    console.log(JSON.stringify(row.data)); 
    } 

回答

1

因爲行是一個數組。

試試這個,而不是for循環。

rows.forEach(row => console.log(JSON.stringify(row.data))) 

rows.forEach(function(row) { console.log(JSON.stringify(row.data)) }) 

的forEach是可以在陣列上

調用在foreach()方法爲每個數組元素一次執行提供的函數的迭代器。

Docs on forEach

你也可以使用一個for循環

for(var i = 0; i < rows.length; i++) { 
    console.log(JSON.stringify(rows[i].data)) 
} 
1

由於row.data變量是undefined

工作實施例:

for(var key in rows){ 
    console.log(JSON.stringify(rows[key].data)) 
} 
1

可選擇使用的foreach的解決方案,你可以用一個簡單的循環做到這一點。

var data = '{"data":{"time":"2016-08-08T15:13:19.605234Z","x":20,"y":30}}{"data":{"time":"2016-08-08T15:13:19.609522Z","x":30,"y":40}}'; 

    var sanitized = '[' + data.replace(/}{/g, '},{') + ']'; 
    var rows = JSON.parse(sanitized); 
    console.log(rows); 

     for(var i=0;i < rows.length;i++){ 
     console.log(JSON.stringify(rows[i].data)); 
     }