如何解决合并两个变量以创建分配了数字的新变量
我想使用几个变量,它们是方程式的数字。但是为了获得这些变量,我必须将两个变量串在一起才能获得该数字。我遇到的问题是,我不了解将该变量用作数字而不是串联名称的语法。
以下是变量及其关联的数字:
var drygood = 0.9;
var dryaverage = 0.8;
var drybad = 0.7;
var wetgood = 0.7;
var wetaverage = 0.6;
var wetbad = 0.5;
var snowygood = 0.3;
var snowyaverage = 0.3;
var snowybad = 0.3;
var icygood = 0.1;
var icyaverage = 0.1;
var icybad = 0.1;
这些词是由气候(干燥,潮湿,下雪,冰冷)和轮胎状况(良好,中等,不良)组成的。
我从第一个数组和第二个数组中随机选择一个单词并将它们连接起来。
所以,我最后得到了上述变量中的一个词。
const tires = ["good","average","bad"];
const tireCondition = Math.floor(Math.random() * tires.length);
console.log(tireCondition,tires[tireCondition]);
const coldClimates = ["dry","wet","icy","snowy"];
const randomTireCold = Math.floor(Math.random() * coldClimates.length);
console.log(randomTireCold,coldClimates[randomTireCold]);
控制台日志确认我正在连接,并且返回的字符串正确。但是然后我需要将其放入一个等式中:
let stoppingDistMapOne = ((+velocitySquared / (2 * coldClimates[randomTireCold] + tires[tireCondition] * 9.81)) + +reactionTimeDistance);
coldClimates [randomTireCold] + tires [tireCondition] =已经给定的变量名,但不会将其转换为数字。因此,我想我缺少一些语法。我得到了正确的变量名,但没有获得与该变量关联的数字。
任何帮助表示赞赏。
解决方法
基本上,您可以使用eval()函数评估您的两个字符串。
var drygood = 0.9;
console.log(eval("dry" + "good"));
但我不建议使用eval。
更好的方法是将天气状况分组在一个对象内,并使用键(可以是字符串)获取正确的值。
例如
var conditions = {
"drygood": 0.9,"dryaverage": 0.8,"drybad": 0.7,"wetgood": 0.7,"wetaverage": 0.6,"wetbad": 0.5,"snowygood": 0.3,"snowyaverage": 0.3,"snowybad": 0.3,"icygood": 0.1,"icyaverage": 0.1,"icybad": 0.1
}
const tires = ["good","average","bad"];
const tireCondition = Math.floor(Math.random() * tires.length);
const coldClimates = ["dry","wet","icy","snowy"];
const randomTireCold = Math.floor(Math.random() * coldClimates.length);
console.log(coldClimates[randomTireCold] + tires[tireCondition]);
console.log(conditions[coldClimates[randomTireCold] + tires[tireCondition]]);
,
使用对象来使用您生成的密钥。
var conditions = {
drygood: 0.9,dryaverage: 0.8,drybad: 0.7,wetgood: 0.7,wetaverage: 0.6,wetbad: 0.5,snowygood: 0.3,snowyaverage: 0.3,snowybad: 0.3,icygood: 0.1,icyaverage: 0.1,icybad: 0.1
};
const tires = ["good","bad"];
const tireCondition = Math.floor(Math.random() * tires.length);
const keyCond = tires[tireCondition];
const coldClimates = ["dry","snowy"];
const randomTireCold = Math.floor(Math.random() * coldClimates.length);
const keyClim = coldClimates[randomTireCold];
console.log(conditions[keyClim + keyCond]);
或者通过更好的对象结构使其更具可读性。
var conditions = {
dry: {
good: 0.9,average: 0.8,bad: 0.7
},wet: {
good: 0.7,average: 0.6,bad: 0.5
},snowy: {
good: 0.3,average: 0.3,bad: 0.3
},icy: {
good: 0.1,average: 0.1,bad: 0.1
}
};
const tires = ["good","snowy"];
const randomTireCold = Math.floor(Math.random() * coldClimates.length);
const keyClim = coldClimates[randomTireCold];
console.log(conditions[keyClim][keyCond]);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。