使用for-loop:JavaScript创建动态变量名和值
我有一个要动态分配给另一个值列表的值列表:使用for-loop:JavaScript创建动态变量名和值,javascript,Javascript,我有一个要动态分配给另一个值列表的值列表: var activeMachines = [41,44,46] for(i = 0; i < activeMachines.length; i++){ var temp + activeMachines[i] = document.getElementById("tempData"+activeMachines[i]); var humid + activeMachines[i] = document.getElementByI
var activeMachines = [41,44,46]
for(i = 0; i < activeMachines.length; i++){
var temp + activeMachines[i] = document.getElementById("tempData"+activeMachines[i]);
var humid + activeMachines[i] = document.getElementById("humidData"+activeMachines[i]);
var time + activeMachines[i] = document.getElementById("timeData"+activeMachines[i]);
}
上面的代码不起作用。我读过一些建议使用数组的帖子,但我认为我需要以某种方式动态创建一个字典,而我似乎无法获得正确的语法来实现这一点。有什么建议吗?您可以使用
窗口
对象来执行此操作,但是,我建议您创建自己的对象,将这些“变量”作为属性存储在新的键值
对象中
var activeMachines = [41,44,46]
var obj = {};
for(i = 0; i < activeMachines.length; i++){
obj['temp' + activeMachines[i]] = document.getElementById("tempData"+activeMachines[i]);
obj['humid' + activeMachines[i]] = document.getElementById("humidData"+activeMachines[i]);
obj['time' + activeMachines[i]] = document.getElementById("timeData"+activeMachines[i]);
}
var-activeMachines=[41,44,46]
var obj={};
对于(i=0;i
您可以使用窗口
对象来执行此操作,但是,我建议您创建自己的对象,将这些“变量”作为属性存储在新的键值
对象中
var activeMachines = [41,44,46]
var obj = {};
for(i = 0; i < activeMachines.length; i++){
obj['temp' + activeMachines[i]] = document.getElementById("tempData"+activeMachines[i]);
obj['humid' + activeMachines[i]] = document.getElementById("humidData"+activeMachines[i]);
obj['time' + activeMachines[i]] = document.getElementById("timeData"+activeMachines[i]);
}
var-activeMachines=[41,44,46]
var obj={};
对于(i=0;i
试试这个
var activeMachines = [41,44,46];
var output = {};
for(i = 0; i < activeMachines.length; i++){
output["temp" + activeMachines[i]] = document.getElementById("tempData"+activeMachines[i]);
output["humid" + activeMachines[i]] = document.getElementById("humidData"+activeMachines[i]);
output["time" + activeMachines[i]] = document.getElementById("timeData"+activeMachines[i]);
}
console.log(output);
var-activeMachines=[41,44,46];
var输出={};
对于(i=0;i
所有变量都在此变量中定义。
类似于输出['temp41']
的访问尝试以下操作
var activeMachines = [41,44,46];
var output = {};
for(i = 0; i < activeMachines.length; i++){
output["temp" + activeMachines[i]] = document.getElementById("tempData"+activeMachines[i]);
output["humid" + activeMachines[i]] = document.getElementById("humidData"+activeMachines[i]);
output["time" + activeMachines[i]] = document.getElementById("timeData"+activeMachines[i]);
}
console.log(output);
var-activeMachines=[41,44,46];
var输出={};
对于(i=0;i
所有变量都在此变量中定义。
类似于output['temp41']
的访问您可以使用对象并创建属性而不是变量
var context = {};
for (i = 0; i < activeMachines.length; i++) {
context[`temp${activeMachines[i]}`] = document.getElementById("tempData"+activeMachines[i]);
}
var context={};
对于(i=0;i
使用context.temp41
或context[“temp41”]
访问这些数据,您可以使用对象并创建属性而不是变量
var context = {};
for (i = 0; i < activeMachines.length; i++) {
context[`temp${activeMachines[i]}`] = document.getElementById("tempData"+activeMachines[i]);
}
var context={};
对于(i=0;i
当您试图动态定义变量名时,可以使用context.temp41
或context[“temp41”]
访问这些数据。这表明您应该后退一步,重新考虑数据结构。几乎总是错误的选择导致了困难、混乱的代码
在本例中,您有三个属性,分别是id和temp、湿度和时间属性。这正是对象的用途
例如,您可以将数据表示为:
let data = { machine_41: {temp: 40, humid: 10, time: 200},
machine_44: {temp: 30, humid: 15, time: 500},
} // etc
现在,您的所有数据都位于一个位置,您可以使用简单的属性访问它:
data.machine_41.temp
使用reduce()
,从数字数组转到此对象非常简单:
var-activeMachines=[41,44,46]
让data=activeMachines.reduce((obj,machineID)=>{
//一些假数据
temp=20//或document.getElementById等。。
湿度=10
时间=600
obj['machine_u'+machineID]={温度、湿度、时间}
返回obj
}, {})
console.log(“machine\u 41湿度:”,data.machine\u 41.湿度)
console.log(data)
任何时候,当您试图动态定义变量名时,这都表明您应该后退一步,重新考虑您的数据结构。几乎总是错误的选择导致了困难、混乱的代码
在本例中,您有三个属性,分别是id和temp、湿度和时间属性。这正是对象的用途
例如,您可以将数据表示为:
let data = { machine_41: {temp: 40, humid: 10, time: 200},
machine_44: {temp: 30, humid: 15, time: 500},
} // etc
现在,您的所有数据都位于一个位置,您可以使用简单的属性访问它:
data.machine_41.temp
使用reduce()
,从数字数组转到此对象非常简单:
var-activeMachines=[41,44,46]
让data=activeMachines.reduce((obj,machineID)=>{
//一些假数据
temp=20//或document.getElementById等。。
湿度=10
时间=600
obj['machine_u'+machineID]={温度、湿度、时间}
返回obj
}, {})
console.log(“machine\u 41湿度:”,data.machine\u 41.湿度)
log(data)
我建议创建三个数组,并将值存储在其中。然后可以执行temp[i]=…
等操作。我建议创建三个数组,并将值存储在其中。然后您可以执行temp[i]=…
等操作。模板字符串缺失$
模板字符串缺失$
非常感谢Mark。你的解决方案比我所采取的方法要干净得多。你能解释一下为什么我可以为每台机器设定不同的温度、湿度、时间和数值吗?您的代码为所有机器提供相同的值。我是JavaScript新手,不完全理解您的代码。再次感谢您抽出时间来帮忙!嘿@MattG,我假设你的温度,湿度