Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在纯js中的变量名称中使用多变量字符串_Javascript_String_Variables - Fatal编程技术网

Javascript 如何在纯js中的变量名称中使用多变量字符串

Javascript 如何在纯js中的变量名称中使用多变量字符串,javascript,string,variables,Javascript,String,Variables,我是一个巨大的JS nub,仍然习惯于语法上的细微差别。基本上,我希望将以下内容简化为一行: if (player==1) {variable1[arrayposition] = thisvalue;} if (player==2) {variable2[arrayposition] = thisvalue;} 如果你真的必须这样做,那么: [variable1, variable2][player-1][arrayposition] = thisvalue; //this is a one

我是一个巨大的JS nub,仍然习惯于语法上的细微差别。基本上,我希望将以下内容简化为一行:

if (player==1) {variable1[arrayposition] = thisvalue;}

if (player==2) {variable2[arrayposition] = thisvalue;}

如果你真的必须这样做,那么:

[variable1, variable2][player-1][arrayposition] = thisvalue;
//this is a one-liner. Short but hard to read.
演示:


不过,你现在做这件事的方式还可以。它没有问题。

您可以使用三元运算符定义要使用的“变量”,并假设数组位置和值相同,则在一行上使用所有变量:

(player === 1 ? variable1 : variable2)[arrayposition] = thisvalue;

我假设
player
只能等于
1
2
。如果必须,您应该
null
检查或检查其他值,您应该在其他地方或其他地方执行此操作。

使用映射尝试此操作,此操作支持数字和字符串

({
    "1" : variable1,
    "2" : variable2,
})[player+''][arrayPosition] = thisValue

谢谢你的回答!我学到了一些我不知道的有用的东西。我真正希望的是,我可以在一个数组中包含一个数组(但我无法使用这种语法):

变量[playernumber][arrayposition]=此值


是否有可能我处理这个问题效率低下,而应该将“变量”视为包含数组的对象

这是正确的。无论谁投了反对票,都应该被禁止投反对票。这与if结构相同,而不是更短。Derek的另一个答案更好,因为它避免了“if”@ZigMandel是的,它确实具有相同的if结构,但问题是要使两条直线成为一条直线,这就做到了。另外,我的回答避免了创建一个与Derek不同的新数组。。。为什么要轻视使用“如果”?公平地说,这是一行+“给你一个。”德里克朕會功夫 谢谢值得注意的是,它也快得多(至少在Chrome33中是如此)。不过,我很喜欢你答案的创造性,从来没有这样解决过。用行数衡量代码有什么意义?Derek的回答避免了“如果”,这一点很重要,因为它允许优化器执行得更快(至少在c这样的编译语言中,我承认我还没有看到js中会发生什么),是的,创建数组也会带来性能上的影响,但这取决于具体情况,也许可以一次性创建或作为全局创建。同样,我是基于编译代码的经验,而不是js。有关分支以及编译器如何尝试优化它们的更多信息,请参见本文,可能类似于:variable[playernumber].subvariable[arrayposition]