[英]create dynamic variable inside for loop to access array
我有多個具有相同前綴名稱的數組。
var region1 = ['01','02','03','04','05','06','07'];
var region2 = ['08','09','11','12'];
var region3 = ['13'];
var region4 = ['14','22'];
var region5 = ['10','15','16','17','18','19','20'];
var region6 = ['21','23','24'];
var region7 = ['25','26','27','28','29','30'];
var region8 = ['31','33','36','37','38','39'];
var region9 = ['32','34','35','40','41','42','43','44','45','46','47'];
var prefecture = "33";
根據縣值,我想顯示區域
if(region1.indexOf(prefecture) != -1){
$('.region1').show();
$('a.region1').addClass('regionSelect');
}
else if(region2.indexOf(prefecture) != -1){
$('.region2').show();
$('a.region2').addClass('regionSelect');
}
else if(region3.indexOf(prefecture) != -1){
$('.region3').show();
$('a.region3').addClass('regionSelect');
}
else if(region4.indexOf(prefecture) != -1){
$('.region4').show();
$('a.region4').addClass('regionSelect');
}
else if(region5.indexOf(prefecture) != -1){
$('.region5').show();
$('a.region5').addClass('regionSelect');
}
else if(region6.indexOf(prefecture) != -1){
$('.region6').show();
$('a.region6').addClass('regionSelect');
}
else if(region7.indexOf(prefecture) != -1){
$('.region7').show();
$('a.region7').addClass('regionSelect');
}
else if(region8.indexOf(prefecture) != -1){
$('.region8').show();
$('a.region8').addClass('regionSelect');
}
很好
但是我這樣嘗試過,以最小化代碼。
for(var i=1; i<=9; i++){
if('region'+i.indexOf(prefecture) != -1){
$('.region'+i).show();
$('.region'+i).addClass('regionSelect');
}
}
它說i.indexOf沒有定義
使用數組而不是變量。
var regions = [
['01','02','03','04','05','06','07'],
['08','09','11','12'],
// and so on
]
然后按索引選擇
for(var i=0; i<9; i++){
if(regions[i].indexOf(prefecture) != -1){
$('.region'+(i+1)).show()
.addClass('regionSelect');
}
}
我在這里看到了很多問題,當人們已經有其他出色的數據結構(例如Array和Object)可用於此確切目的時,人們嘗試使用“動態變量”名稱。
var region = {
"1": ['01','02','03','04','05','06','07'],
"2": ['08','09','11','12'],
"3": ['13'],
/* snip */
};
for(var i=1; i<=9; i++){
if(region[i].indexOf(prefecture) != -1){
$('.region'+i).show();
$('.region'+i).addClass('regionSelect');
}
}
如果絕對必須使用動態變量名,則不能使用var
。 如果它們是全局的(在window
),則可以執行此操作,然后通過window['region' + i]
訪問它們。 我不建議這樣做的 。
您需要使用[]
語法引用變量所附加的對象,以引用其子對象,如果它們在全局范圍內,則可以嘗試使用window
...
for(var i=1; i<=9; i++){
if(window['region'+i].indexOf(prefecture) != -1){
$('.region'+i).show();
$('.region'+i).addClass('regionSelect');
}
}
否則,我希望this['region'+i].indexOf etc...
也能正常工作
優先問題。
你需要寫
('region'+i).indexOf(prefecture)
否則被理解為
'region'+(i.indexOf(prefecture))
正如FelixKling在下面指出的那樣,此操作可修復語法錯誤,但將不起作用,因為您將在字符串"region1"
等中查找該縣。請查看其他答案以查看如何進行真正的編碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.