繁体   English   中英

当键/值是动态的时,将JSON值转换为数字

[英]Convert JSON values to number when key/values are dynamic

我正在使用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)) {

您还缺少isNaN检查的if语句的第二个)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM