我一直在网上搜索并尝试了一些对我来说不起作用的修复程序,所以想知道是否有人可以帮助我解决这个问题。
基本上我已经附加了一些代码,它显示了一个接收区域的函数(区域是一个数字/只有 3 个区域 1、2、3)。然后,我有 3 个数据集,分别为 data1、data2、data3,我想使用传递的区域编号来引用它们。但我需要将 data1、data2 和 data3 全部保留为单独的数组,然后将它们插入到图表(chartjs)中。
当用户按下开关时会调用该函数,每个区域有 3 个按钮,使该数据集能够显示在图表上,然后在关闭时会删除该区域数据集。
任何帮助都会很棒, 基兰
var data1 = [];
var data2 = [];
var data3 = [];
// Adds/removes data sets from the chart
function redrawChart(zone){
var dataSet = "data"+zone;
dataSet.push(7,8,8,9,10);
historyChart = new Chart(document.getElementById('ns-popout-graph').getContext("2d")).Line(newData);
}
最佳答案
在这种情况下,你实际上没有太多选择。最干净的一种是使用对象来保存数组,然后构造动态键很容易:
var datas = {
data1: [],
data2: [],
data3: []
};
// Adds/removes data sets from the chart
function redrawChart(zone) {
var dataSet = datas["data" + zone];
dataSet.push(7,8,8,9,10);
// ...
}
另一种方法可能是eval
,但这不是解决此问题的推荐方法。请注意,如果数据变量是在全局命名空间 (window
) 中定义的,您仍然可以使用 window['data' + zone]
但我希望您不要污染全局范围, 你? :)
关于Javascript 使用变量值作为名称引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33861034/