javascript - 当键/值是动态时将 JSON 值转换为数字

标签 javascript json d3.js

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

相关文章:

javascript - 使用 javascript/JQM 对 JSON 对象进行排序并附加到 html

java - 如何在 Java 中使用 themoviedb.org api

javascript - D3 - 未捕获的类型错误 : Cannot read property 'length' of undefined

javascript - 如何将不断变化的数据源绑定(bind)到一组 svg?

javascript - D3.js 折线图网格问题

javascript - 事件 | jQuery 还是 Backbone?

javascript - 在使用 gulp 和 angular.js 构建的网站中,CSS 和 JS 作为 HTML 的副本加载

javascript - Firebase 9 和 ref 函数与 Vue 组合

javascript - DOM 解析器在 img 标签上给出错误

json - JSP:如何读取 HTTP post/get 请求的内容