首页 > 解决方案 > 对解析的 JSON 值的计算产生 NaN

问题描述

我对某些代码有疑问。我开始为 Chroma 构建一个插件以使用 JSON 插入数据,但向我显示的是 NaN。

我的文件 content.js

    var xmlhttp = new XMLHttpRequest();
var url = "http://rlinkit.neteasy.pl/abc.json";

xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        var myArr= Array();
        var myArr = JSON.parse(this.responseText);
        myFunction(myArr);
    }
};

xmlhttp.open("GET", url, true);
xmlhttp.send();

function myFunction(arr) {
    for (i in arr) {
        for(j in arr[i] ){
            for(p in arr[i][j]){
                out = arr[i][j][p].currency + arr[i][j][p].code + arr[i][j][p].bid + arr[i][j][p].ask + '<br>';
            }
        }
    }
    document.getElementById("id01").innerHTML = out;
}

我的代码HTML:

<div id="id01"></div>

<script src="content.js"></script>

我的输出:

在此处输入图像描述

编辑(当我给出代码时 - 没有显示任何内容。):

function myFunction(arr) {
    var out = "";
    var i;
    var j;
    var p;
    for (var i = 0; i in arr.length; i++) {
        for(var j = 0; j in arr[i].length; j++ ){
            for(var p = 0; p in arr[i][j].length; p++){
                out += arr[i][j][p].currency + arr[i][j][p].code + arr[i][j][p].buy + arr[i][j][p].sell + '<br>';
            }
        }
    }
    document.getElementById("id01").innerHTML = out;
}

标签: javascriptjsongoogle-chrome-extension

解决方案


要遍历 JavaScript 数组,可以使用for ... of循环或传统的 for循环。更新函数中的语法(特别i in arr.length是 )是无效的 JavaScript(看起来像 Python?)。

提供示例数据将有助于改进此答案,但请尝试以下某些版本(已更新为使用 ES6let语法,您可能希望恢复为var):

function myFunction(arr) {
    let out = "";
    for (let i = 0; i < arr.length; i++) {
        for (let j = 0; j < arr[i].length; j++) {
            for (let p = 0; p < arr[i][j].length; p++) {
                out += arr[i][j][p].currency + arr[i][j][p].code + arr[i][j][p].buy + arr[i][j][p].sell + "<br>";
            }
        }
    }
    document.getElementById("id01").innerHTML = out;
}

推荐阅读