我正在使用 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
)})
显然我的测试/循环逻辑有问题。我非常感谢这里的一些指导。
谢谢!
最佳答案
isNaN
将适用于数字字符串 - 赋值运算符可能会导致你的代码失败 - 你可以这样做:
if(!isNaN(d.i)) {
您的 if
语句中还缺少第二个 )
以及 isNaN
检查。
isNaN("1") //false
isNaN("x") //true
假设我应该阅读更多内容。您需要 2 个循环 - 一个循环数组,另一个循环测试循环对象的每个键/值:
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];
}
}
}
关于javascript - 当键/值是动态时将 JSON 值转换为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40594197/