【问题标题】:Converting string to variable name. (JavaScript)将字符串转换为变量名。 (JavaScript)
【发布时间】:2013-02-21 05:35:44
【问题描述】:

我确实看过前面的问题,但它们是针对整数值的,我需要一个文本值的答案。

我在本周早些时候提出了一个与此相关的问题,但这里是。 如下所示,我的 Make[x] 等于某个字符串值(Acura、Honda、Toyota)。当我将该 Make[x] 传递给函数 Models(Make) 时,如何让该字符串成为 Models(Make) 函数中的变量 Acura、Honda 和 Toyota 的变量名称?

function Models(Make){
var Acura=['RSX','NSX','Integra',];
var Honda=['Accord','Civic','Prelude',];
var Toyota=['MR2','Celica','Camry',];
var holder = Make;
var Model = holder[Math.floor(Math.random()*holder.length)];
return Model;
}

function main(){
var Makes=['Acura','Honda','Toyota',];
var Make = Makes[Math.floor(Math.random() * Makes.length)];
var Model = Models(Make);
var Out = Make + " " + Model;
return Out;
}

document.write(main());

如果运行,您将获得 Make 的名称,但它不是模型,而是从模型名称中吐出一个字母来代替 make。

【问题讨论】:

  • 我认为你在这方面走错路了。一个对象似乎就是你所需要的。 var cars = {acura: [], honda: [], ...}...

标签: javascript function random


【解决方案1】:

你不能用你目前拥有的东西来做你所要求的事情,但无论如何创建模型的对象会更有意义

function Models(Make) {
    var Models = {"Acura": ['RSX','NSX','Integra'] /* snip */};
    return Models[Make][random()];
}

【讨论】:

  • 我很担心,但你为什么要返回 Make 作为 Models 的索引?这个时候make是一个字符串,是不是需要一个整数来索引?
  • @GarrettMichaelGritzStelly 如果它是一个对象,则不是。只有数组需要整数索引;对象可以被字符串索引(嗯,技术上他们必须是)
  • @GarrettMichaelGritzStelly 走那条路要小心;我给你的例子本质上只是一个简单的基于字符串的哈希/字典(只是在 JavaScript 中这个数据结构被称为“对象”),但是 JS 中的对象还有很多其他复杂性不同的功能,包括原型的使用和方法
  • 要注意的另一件事是对象文字 {} 没有明确的顺序。如果顺序很重要,您将需要一个数组 [] 作为解决方案的一部分。
猜你喜欢
  • 2011-08-02
  • 2011-08-27
  • 2010-12-04
  • 1970-01-01
  • 2014-05-01
  • 2015-10-25
  • 1970-01-01
相关资源
最近更新 更多