簡體   English   中英

在for循環中使用變量更改數組

[英]Changing the array with a variable in a 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/

可以通過使用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訪問其元素。
更新小提琴

您可以使用window對象訪問變量。 但是,這假定變量是全局變量(在您的示例中就是這種情況)。

將循環更改為以下內容:

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM