Javascript - 是不是可以访问像 var b = 'opt' + 5; 这样的数组?警报(b [61]);?

Posted

技术标签:

【中文标题】Javascript - 是不是可以访问像 var b = \'opt\' + 5; 这样的数组?警报(b [61]);?【英文标题】:Javascript - is it possible to access an array like var b = 'opt' + 5; alert(b[61]);?Javascript - 是否可以访问像 var b = 'opt' + 5; 这样的数组?警报(b [61]);? 【发布时间】:2013-02-17 15:40:00 【问题描述】:

php 中,我可以这样做:

$name = "options$a"; // or "options" . $a, doesn't matter

for ($i = 0; $i < count($name[$i]); $i++) 
    // do something...

只要 options0 存在(假设 $a01 或其他),这个结构是完全有效的,但是......现在我需要在 javascript 中做同样的事情,但现在没有成功。

谁能告诉我怎么做?

【问题讨论】:

您可以使用window 对象上的“全局”变量执行此操作,但不能使用var 声明的局部变量。无论如何,我认为这是一种不好的做法,即使在 PHP 中,当您有一个称为array 的出色数据结构可供您使用时。 学习数组可能是个好主意 “只要 options0 存在”是什么意思?如果$a0,那么$name = "options$a"; 将导致$name 成为字符串 options0 不是可能以$options0$options[0] 的名称存在的变量,如果这确实是你所期待的。 现在是学习如何使用数组而不是学习如何做这些可憎的事情的好时机。一个不懂数组的程序员,就是一个永远奋斗的程序员。 【参考方案1】:

您可以使用某些 cmets 所描述的数组,也可以使用对象属性。它们涉及类似的符号,但工作方式不同。例如,您可以这样做:

var options =  option0 : ['a', 'b', 'c'],
                option1 : ['d', 'e'],
                ...
               ;
var a = 0;
var count = options['option' + a].length; // assigns 3 to count

这将访问名为'option' + aoptions 的属性(或者,使用此示例代码,option0)。

虽然您可以轻松计算和使用属性名称,但您不能(正如 cmets 中指出的那样)使用局部变量名称来执行此操作。

【讨论】:

感谢您的信息。我承认我的解释很糟糕,对此我深表歉意。我需要这个“诡计”,因为我想替换 OpenCart 使用自动完成文本字段(现在这是可恶的)作为选择器(更合适)来显示不同的产品选项及其值。问题是我正在使用 PHP 加载选项选择器,现在我必须知道某个选择器属于哪个选项 ID,然后才能在第二个选择器中实际加载选项值。 @JulioMecaHansen - 为什么我建议的结构不起作用?按照我发布的模式,第一个选择器索引可用于检索第二个选择器所需的选项数组。我错过了什么? 它工作了 :) 虽然最后我用分隔符结束了我需要的值的“编码”。它产生了一个替代解决方案,但是,嘿,你的工作,加上它是我最初寻找的。谢谢:)

以上是关于Javascript - 是不是可以访问像 var b = 'opt' + 5; 这样的数组?警报(b [61]);?的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript:闭包是不是可以通过值而不是像 PHP 中的引用来访问封闭范围内的变量?

JavaScript--漏写var却还能使用标签

像“var foo = function bar() ...”这样的Javascript函数?

Javascript 对象解构赋值是不是使用 const、let 或 var?

JavaScript中var a=b=c=d的小发现

javascript私有函数访问公共变量