2016-08-09 32 views
0

Warum gibt console.log (JSON.stringify (row.data)) zurück undefined und wie es zu beheben?Warum JSON.stringify gibt undefined zurück

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

Antwort

1

da Zeilen ist ein Array.

Versuchen Sie dies anstelle der for-Schleife.

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

oder

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

forEach ist ein Iterator, die auf Arrays nennen

Die forEach() Methode führt eine Funktion vorgesehen einmal pro Array-Element.

Docs on forEach

könnten Sie auch eine for-Schleife verwenden

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

Da row.data Variable ist undefined.

Arbeitsbeispiel:

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

Alternativ können die foreach-Lösungen zu verwenden, können Sie auch diese mit einer einfachen Schleife tun.

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