将数据从对象传递到数组

时间:2019-10-02 14:28:21

标签: javascript ajax highcharts

我尝试绘制汇率图表,向银行提出请求,并获取包含有关汇率数据的对象数组。而且我需要将值从对象转移到图表上显示的数组

在这里我得到了一个对象数组 dateArr = { 0: {rate: 25.310639, exchangedate: "06.09.2019"} 1: {rate: 25.310639, exchangedate: "07.09.2019"} 2: {rate: 25.310639, exchangedate: "08.09.2019"}}

 var dataArr = [];
async function currency(e) {

var sdate=startdate.value.split("-").join("");
var edate=enddate.value.split("-").join("");
 for (var i = Number(sdate); i <= Number(edate); i++){
	await delay(2000)
	let url=`https://bank.gov.ua/NBUStatService/v1/statdirectory/exchange?valcode=${currenc.value}&date=${i}&json`;
let response= await fetch(url);
let data =await response.json();
var itemObj={
	rate:data[0].rate,
	exchangedate:data[0].exchangedate
	};
	dataArr.push(itemObj);
}
console.log(dataArr);

}

在这里,我需要将数据字段传递给series数组 数据[25.31,25.31,25.31]

Highcharts.chart('container', {

    title: {
        text: 'Графік курса валют'
    },

    subtitle: {
        text: ''
    },

    yAxis: {
        title: {
            text: 'Зріст'
        }
    },
    legend: {
        layout: 'vertical',
        align: 'right',
        verticalAlign: 'middle'
    },

    plotOptions: {
        series: {
            label: {
                connectorAllowed: false
            },
            pointStart: 2010
        }
    },

    series: [{
        name: '',
        data: []        //OVER HERE!!!
    }, {
       
    }],

    responsive: {
        rules: [{
            condition: {
                maxWidth: 500
            },
            chartOptions: {
                legend: {
                    layout: 'horizontal',
                    align: 'center',
                    verticalAlign: 'bottom'
                }
            }
        }]
    }

});

2 个答案:

答案 0 :(得分:0)

不确定我是否正确理解了您的问题...如果在这种情况下可以访问数组变量“ dataArr”,则可以分配数据:dataArr像这样:

您可以像这样将速率值从数组中提取到新数组中:

var dateArr = [{rate: 25.310639, exchangedate: "06.09.2019"}, {rate: 25.310639, exchangedate: "07.09.2019"}]
var rates = dateArr.map(x => x.rate)
# rates is now [25.310639, 25.310639]
Highcharts.chart('container', {

    title: {
        text: 'Графік курса валют'
    },

    subtitle: {
        text: ''
    },

    yAxis: {
        title: {
            text: 'Зріст'
        }
    },
    legend: {
        layout: 'vertical',
        align: 'right',
        verticalAlign: 'middle'
    },

    plotOptions: {
        series: {
            label: {
                connectorAllowed: false
            },
            pointStart: 2010
        }
    },

    series: [{
        name: '',
        data: rates        //OVER HERE!!!
    }, {

    }],

    responsive: {
        rules: [{
            condition: {
                maxWidth: 500
            },
            chartOptions: {
                legend: {
                    layout: 'horizontal',
                    align: 'center',
                    verticalAlign: 'bottom'
                }
            }
        }]
    }

});

答案 1 :(得分:0)

我想您获得了如下所示的对象数组,然后只需使用map函数来获取速率字段值。

arr = [
    {rate: 25.310639, exchangedate: "06.09.2019"},
    {rate: 25.310639, exchangedate: "07.09.2019"},
    {rate: 25.310639, exchangedate: "08.09.2019"}
];
newData = arr.map(d => d.rate);
console.log(newData);