【问题标题】:Concatinating two variables to make a new variable which is assigned a number连接两个变量以创建一个分配了数字的新变量
【发布时间】:2020-09-02 19:06:43
【问题描述】:

我有几个变量我希望能够使用它们是方程式的数字。但是为了得到这些变量,我必须将两个变量串在一起才能得到这个数字。我的问题是我不明白使用该变量作为数字而不是串联名称的语法。

以下是变量及其相关编号:

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] = 已经给出的变量名称,但它不会将其转换为数字。所以,我猜我错过了一些语法。我得到了正确的变量名,但没有得到与该变量关联的数字。

非常感谢任何帮助。

【问题讨论】:

  • 使用一个对象......
  • 谢谢 :) 我会试试的。只有一件事......你是什么意思;)我会用谷歌搜索它,但如果你有语法,你能告诉我吗? :)

标签: javascript arrays variables concatenation


【解决方案1】:

使用对象来使用您生成的密钥。

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 keyCond = tires[tireCondition];

const coldClimates = ["dry", "wet", "icy", "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", "average", "bad"];
const tireCondition = Math.floor(Math.random() * tires.length);
const keyCond = tires[tireCondition];

const coldClimates = ["dry", "wet", "icy", "snowy"];
const randomTireCold = Math.floor(Math.random() * coldClimates.length);
const keyClim = coldClimates[randomTireCold];

console.log(conditions[keyClim][keyCond]);

【讨论】:

    【解决方案2】:

    基本上你可以使用 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]]);

    【讨论】:

      猜你喜欢
      • 2014-12-07
      • 1970-01-01
      • 1970-01-01
      • 2014-10-03
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 2022-08-04
      • 1970-01-01
      相关资源
      最近更新 更多