使用变量值作为名称引用的Javascript

使用变量值作为名称引用的Javascript,javascript,Javascript,一直在网上搜索并尝试了一些对我无效的修复,所以我想知道是否有人可以帮我解决这个问题 基本上我已经附加了一些代码,显示了一个函数接收一个区域(区域是一个数字/只有3个区域1,2,3)。然后,我有3个数据集,分别称为data1、data2和data3,我希望使用传递的区域号来引用它们。但我需要将data1、data2和data3作为单独的数组保存,因为它们随后被插入到图表(chartjs)中 当用户按下开关on或off时调用该函数,每个区域有3个按钮,每个按钮用于使该数据集显示在图形上,然后当关闭时

一直在网上搜索并尝试了一些对我无效的修复,所以我想知道是否有人可以帮我解决这个问题

基本上我已经附加了一些代码,显示了一个函数接收一个区域(区域是一个数字/只有3个区域1,2,3)。然后,我有3个数据集,分别称为data1、data2和data3,我希望使用传递的区域号来引用它们。但我需要将data1、data2和data3作为单独的数组保存,因为它们随后被插入到图表(chartjs)中

当用户按下开关on或off时调用该函数,每个区域有3个按钮,每个按钮用于使该数据集显示在图形上,然后当关闭时,它将删除该区域数据集

任何帮助都会很好, 基兰


在这种情况下,你真的没有很多选择。最干净的方法是使用object来保存数组,这样构造动态键就很容易了:

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]
,但我希望您不会污染全局范围,是吗?:)

在浏览器中,如果条件正确(即这些变量是在全局范围内声明的),则可以使用
dataSet=window['data'+zone]
唯一的问题是,我必须将数组添加到此。。。为了让它们出现在图表中,如果您查看历史图表=行,它会添加这个新的数据变量。{var newData={labels:labels,dataset:[{fillColor:“rgba(255,0,0.0)”,data:data1},{fillColor:“rgba(0,255,0,0.0)”,数据:data2},{fillColor:“rgba(0,0,255,0.0)”,strokeColor:“浅蓝色”,pointColor:“浅蓝色”,pointStrokeColor:“rgba(0,0,0,0)”,数据:data3}]};当然,您仍然可以这样做:
数据:datas.data1
数据:datas.data1
,等等。谢谢!!真正有用的将在5分钟内作为答案勾选,当它让我:)
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);

    // ...
}