我正在使用d3.json来解码其中键/值未知的数据集。我需要将数字值转换为数字,然后单独留下数字。
我的JSON看起来像这样:
[{"file":"morning","row_total":"1095935","attr1":"79","attr2":""},
{"file":"noon","row_total":"221167","attr1":"174","attr2":"114"},
{"file":"night","row_total":"1317102","attr1":"253","attr2":"114"}]
使用d3.json从PHP文件中读取。对于每个可以(不抛出NaN)的值,我需要转换为数字(d3使用+符号):
d3.json("getData.php", function(error, data) {
if (error) throw error;
data.forEach(function(d) {
if(!isNaN(d.i = +d.i)
d.i = +d.i
)})
显然我的测试/循环逻辑存在问题。我真的很感激这里的一些指导。
谢谢!
答案 0 :(得分:1)
isNaN
将处理数字字符串 - 赋值运算符可能会抛弃您的代码 - 您可以这样做:
if(!isNaN(d.i)) {
您在)
语句中错过了if
次isNaN
次{。}}。
isNaN("1") //false
isNaN("x") //true
假设我应该阅读更多内容。你需要2个循环 - 一个循环你的数组,另一个循环来测试对象的每个键/ val:
for (var i = 0; i < data.length; i++) {
for (var key in data[i]) {
if (!isNaN(data[i][key])) {
data[i][key] = +data[i][key];
}
}
}