使用for循环中的变量更改数组

时间:2015-05-10 10:17:08

标签: javascript arrays for-loop

是否可以更改数组,使用外部变量循环,这会将数组名称作为字符串?

我的示例循环遍历变量名称本身。 我想这只是一个语法问题?非常感谢你的帮助。

HTML

<ul>
    <li data-array="one">Array One</li>
    <li data-array="two">Array Two</li>
    <li data-array="three">Array Three</li>
</ul>

JS

var one = ['One-One','One-Two','One-Three'];
var two = ['Two-One','Two-Two','Two-Three'];
var three = ['Three-One','Three-Two','Three-Three'];

$('li').click(function(){

  var selectedArray = $(this).attr('data-array');

  for (var i = 0; i < selectedArray.length; i++) {
    console.log(selectedArray[i]);
  }
});

https://jsfiddle.net/Loeevw51/

2 个答案:

答案 0 :(得分:1)

通过将其名称作为字符串来引用变量可以使用eval()来完成,但如果您已达到需要执行此操作的位置,则应重新设计代码。

更简单,更快速和更清洁的解决方案是使用对象(如果这是一个选项):

var arrays =
{
    one: ['One-One','One-Two','One-Three'],
    two: ['Two-One','Two-Two','Two-Three'],
    three: ['Three-One','Three-Two','Three-Three']
};

然后,您可以使用arrays['one']arrays.one来访问其元素 Updated fiddle

答案 1 :(得分:0)

您可以使用window对象访问变量。然而,这假设变量是全局变量(在您的示例中就是这种情况)。

将循环更改为以下内容:

for (var i = 0; i < window[selectedArray].length; i++) {
    console.log(window[selectedArray][i]);
}

演示:https://jsfiddle.net/cre0vjk6/