为什么console.log(JSON.stringify(row.data))返回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));
}
答案 0 :(得分:3)
你不应该为数组使用for..in。在row
中,您有索引,而不是值。
更好的解决方案:
rows.forEach(row => console.log(JSON.stringify(row.data)));
答案 1 :(得分:1)
因为Add as Link
变量为row.data
。
工作示例:
undefined
答案 2 :(得分:1)
因为rows是一个数组。
尝试使用此代替for循环。
rows.forEach(row => console.log(JSON.stringify(row.data)))
或
rows.forEach(function(row) { console.log(JSON.stringify(row.data)) })
forEach是一个可以在数组上调用的迭代器
forEach()方法每个数组元素执行一次提供的函数。
你也可以使用for循环
for(var i = 0; i < rows.length; i++) {
console.log(JSON.stringify(rows[i].data))
}
答案 3 :(得分: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));
}