Расчеты по проанализированным JSON значениям дают NaN - PullRequest
0 голосов
/ 16 апреля 2020

У меня проблема с некоторым кодом. Я начал создавать плагин для Chroma для вставки данных, используя JSON, но мне отображается NaN.

Содержимое моего файла. 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>

Мой вывод:

enter image description here

Редактировать (Когда я даю код - ничего не отображается.):

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

1 Ответ

1 голос
/ 16 апреля 2020

Чтобы выполнить итерацию по массиву JavaScript, используйте для ... l oop или традиционный для l oop. Синтаксис в вашей обновленной функции (в частности, i in arr.length) недействителен JavaScript (выглядит как Python?).

Предоставление примеров данных поможет улучшить этот ответ, но попробуйте какую-нибудь версию следующего (обновлен для использования синтаксиса ES6 let, который вы можете захотеть вернуть к 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...