javascript - 将数组传递给 setData() 函数时出现问题

标签 javascript arrays highcharts

我正在尝试创建一个饼图,我可以使用按钮在两个数据系列之间切换。

当我将值直接传递给按钮 onclick 事件上的 setData() 函数时,一切正常。请参阅jsfiddle (在职的)。

但是,如果我将数据保存在数组中,当我使用 setData() 时,该函数会用第二个数组覆盖第一个数组。请参阅jsfiddle (不工作)。

总而言之,当我直接使用数据时,它是有效的:

// the button action
    $('#button').click(function () {
        var chart = $('#container').highcharts();
        bool_pie = !bool_pie;
        if(!bool_pie){
            chart.series[0].setData([129.2, 144.0, 176.0]);
        }else{
            chart.series[0].setData([29.9, 71.5, 106.4]); 
        }
    });

但是当我使用变量时,数组data1被数组data2覆盖

    var data1 = [29.9, 71.5, 106.4];
    var data2 = [129.2, 144.0, 176.0];
// the button action
    $('#button').click(function () {
        var chart = $('#container').highcharts();
        bool_pie = !bool_pie;
        if(!bool_pie){
            chart.series[0].setData(data2);
        }else{
            chart.series[0].setData(data1); 
        }
    });

因此,我发现了这个问题,但我不知道如何管理它。

最佳答案

我发现了你的问题。当您将 data1 传递给 highcharts 初始化时,您将传递对该 data1 的引用,该引用将被 highcharts 转换为对象数组。您必须传递该数组的副本才能将 data1data2 作为数组:

$(function () {
    var data1 = [29.9, 71.5, 106.4];
    var data2 = [129.2, 144.0, 176.0];
    var bool_pie = true;
    $('#container').highcharts({
        chart: {
            type: 'pie'
        },
        series: [{
            data: data1.slice(0, data1.length)
        }]
    });

    // the button action
    $('#button').click(function () {
        var chart = $('#container').highcharts();
        bool_pie = !bool_pie;
        var data = (!bool_pie) ? data2 : data1;
        chart.series[0].setData(data); //PASSING ARRAY VARIABLE
    });
});

我修改了以下行:data: data1.slice(0, data1.length)

http://jsfiddle.net/8rjg30pc/4/

关于javascript - 将数组传递给 setData() 函数时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31030258/

相关文章:

javascript - 在 cordova javascript 中打开 PDF

javascript - Javascript 函数的意外结果

javascript - 一个 javascript 文件可以包含在两个 HTML 文档中吗?

javascript,lodash :- how to sort array of objects where object having object inside

java - 无循环选择排序

javascript - 直方图钟形曲线上的正确旗帜位置

javascript - FF 和 IE 中的 Highcharts dataLabel 定位问题

javascript - Vuejs 布局和页面组件

php - 如何在smarty中打印数组?

javascript - High 图表格式化程序不适用于 Highchart API