我如何使用通过fetch()获取的json数据

时间:2019-11-04 21:03:35

标签: javascript arrays json

我使用以下代码来获取JSON数据,这是成功的。我初始化了一个全局数组,并将该数据的一个单元存储在一个数组中。现在在我的代码中的某个地方,有一个嵌套在对象内部的数组,该如何在其中传递该数组?

var myRequest = new Request("https://script.googleusercontent.com/macros/echo?user_content_key=KW75vuIX25SoStm_K2HLVQNBRF2fx_5URDdL-vYJfUSTBaOAlMkJeWc25wjo5zdMLaznziyuqNd4B5kNs8k3tH0OxgnfssPwm5_BxDlH2jW0nuo2oDemN9CCS2h10ox_1xSncGQajx_ryfhECjZEnIFtsXaNuh0rFflir-T-GWuA8AvQ2kUI-jEwpZssg8RaEHh5W9MAfgDGMRkNsN06wEWY2nZ7HPw5&lib=M_p61mp1Qy6uGkXTBzlj4kloBXIZCdEN3")

fetch(myRequest)
.then(function(res){
    return res.json();
})
.then(function(data){

    for(var i=0;i<400;i++)
    {
        arr[i]=data.user[i].battingScore;

    }
    return arr;
});

这是我要使用arr的地方:

 document.addEventListener('DOMContentLoaded', function () {
document.addEventListener('DOMContentLoaded', function () {
    var myChart3 = Highcharts.chart('c', {

    title: {
        text: 'Logarithmic axis demo'
    },

    xAxis: {
        tickInterval: 1,
        type: 'logarithmic'
    },

    yAxis: {
        type: 'logarithmic',
        minorTickInterval: 0.1
    },

    tooltip: {
        headerFormat: '<b>{series.name}</b><br />',
        pointFormat: 'x = {point.x}, y = {point.y}'
    },

    series: [{
        data:[],                               //here
        pointStart: 1
    }]
});
});
});

注意:这里,series是对象的数组,但是是hello对象的属性。我想在 data 里面的 arr 值是一个数组。怎么做?

1 个答案:

答案 0 :(得分:0)

如果要在呈现图表之前收集数据,则可以这样做。

fetch(myRequest)
    .then(function(res){
        return res.json();
    })
    .then(function(data){
        for(var i=0;i<400;i++){
            arr[i]=data.user[i].battingScore;
        }
        return arr;
    })
    .then(function(scores){
        document.addEventListener('DOMContentLoaded', function () {
            var myChart3 = Highcharts.chart('c', {
                 . . .
                series: [{
                    data:scores,
                    pointStart: 1
                }]
            });
        });
    });
});

否则,您可以将myChart3定义为全局变量,然后在事件侦听器中将“ var myChart3 =“更改为“ myChart3 =”。然后,您可以使用series.addPoint将数据填充到现有图表中,如下所示:

var myChart3;

document.addEventListener('DOMContentLoaded', function () {
    myChart3 = Highcharts.chart('c', {
     . . .
    });
});

fetch(myRequest)
    .then(function(res){
        return res.json();
    })
    .then(function(data){
        for(var i=0;i<400;i++){
            myChart3.series[0].addPoint(data.user[i].battingScore, false);
        }
        myChart3.redraw();
    },
    cache: false
});