gpt4 book ai didi

javascript - 使用 for 循环创建动态变量名称和值 : JavaScript

转载 作者:行者123 更新时间:2023-11-28 17:17:59 25 4
gpt4 key购买 nike

我有一个值列表,我想将其动态分配给另一个值列表:

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]);
}

我希望实现的是这个循环总共创建 6 个新变量:

temp41 = document.getElementById("tempData41");
temp44 = document.getElementById("tempData44");
...

以上不起作用。我读过一些建议使用数组的其他帖子,但我认为我需要以某种方式动态创建一个字典,而且我似乎无法获得正确的语法来实现这一点。有什么建议吗?

最佳答案

任何时候您在动态定义变量名称时遇到困难,都表明您应该退一步并重新考虑您的数据结构。错误的选择几乎总是导致困难、困惑的代码。

在本例中,您似乎拥有三个具有 id 和温度、湿度和时间属性的东西。这正是对象的用途。

例如,您可以表示如下数据:

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]

let data = activeMachines.reduce((obj, machineID) => {
// some fake data
temp = 20 // or document.getElementById etc..
humidity = 10
time = 600
obj['machine_'+machineID] = {temp, humidity, time}
return obj
}, {})
console.log("machine_41 humidity:",data.machine_41.humidity)
console.log(data)

这可能不是您需要的确切数据结构(例如,作为数组可能更好),但这种方法比尝试创建一堆单独的变量更适合您。

关于javascript - 使用 for 循环创建动态变量名称和值 : JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53033300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com