【问题标题】:Creating a Javascript Variable with the Length of an Array创建具有数组长度的 Javascript 变量
【发布时间】:2013-08-27 07:12:43
【问题描述】:

在这个函数中,我需要创建一个名为“dorfX”的新变量。 X 是变量将进入的数组的长度。例如,这将产生一个名为“dorf5”的变量,其参数在函数“makeADorf”中指定。但是,它不想工作,因为没有识别变量的名称。

据我所知,要么我需要以某种方式重命名变量,要么弄清楚如何使其工作。

这可能有一个简单的答案,但我对编程很陌生,如果我能得到一些帮助,我将不胜感激。谢谢。

function guildRecruit(){
    var price = Math.floor((Math.random()*100)+1) + (dorves.length*50);
    var recruit = prompt("Hello there friend. Would you like to recruit an adventurer?");
    if(recruit == "yes"){
        var dorf(dorves.length) = new makeADorf("Testificate","123");
        dorf(dorves.length).push(dorf(dorves.length));
    }else{
        confirm("Thank you for visiting the Dragon Slayer Guild.");
    }
}

【问题讨论】:

  • 你写的代码没有多大意义。您是否要创建一个以数字结尾的变量?
  • 你为什么想要一个带有变量名的变量?

标签: javascript rename


【解决方案1】:

我认为您对如何设置代码有些困惑。从你写的猜测,看起来你想要一个函数:

  • 创建一个新的多夫/冒险家并记住它
  • 除了写消息什么都不做

为此,您可能需要在函数外部创建一个数组。我将数组称为“冒险者”。如果制作新 dorf 的条件为真,则将新 dorf 推送到“adventurers”数组。像这样的东西(注意:我删除了所有使用 dorves 的代码):

var adventurers = []; // new Array(); would do the same thing, read Jan Dvorak's comment
function guildRecruit() {
    var price = Math.floor((Math.random()*100)+1);
    var recruit = prompt("Hello there friend. Would you like to recruit an adventurer?");
    if (recruit == "yes") adventurers.push(new makeADorf("Testificate","123"));
    else confirm("Thank you for visiting the Dragon Slayer Guild.");
}

编辑:我想不出用数字创建变量会有用的情况。我也相当肯定这是不可能的。数组的重点是使用与此类似的逻辑,但您的 dorves 将被引用为 adventurers[0] 而不是 adventurers(someFunction)

【讨论】:

  • 不要使用new Array()!使用[]。它更快,而且new Array(int) 的作用与[int] 不太一样。
  • Jan Dvorak 的观点是正确的,如果数组对您有意义,请使用他的建议。
  • 我的评论是针对你的,asimes。 应该在你的代码中修复new Array
  • 我认为轻微的优化可以等到他理解代码是/应该做什么之后。
  • 这不是轻微的优化。 new Array() 是代码气味,如果只是因为 new Array(content) 有效,除非 content 是单个数字。 现在解决这个问题比以后改变他的方式要容易得多。
猜你喜欢
  • 1970-01-01
  • 2013-05-20
  • 2019-03-01
  • 1970-01-01
  • 2013-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多