Імя зменнай у цыкле

Я падазраю, што я раблю памылку ў базавым сінтаксісе JavaScript.

var my_array = new Array(10);

for (var count=0; count

Я хачу, каб пятля, каб стварыць шэраг зменных, якія павінны быць названыя <�моцны> my_array0, my_array1, my_array2 , і гэтак далей. Код вышэй, як я спрабаваў зрабіць гэта, але ён не працуе. Што такое правільны спосаб наймення зменнай ўнутры цыкла?

EDIT: I know I could use my_array[count], but that's not what I'm looking for. What I need is to be able to name a variable inside the loop, using the index as part of the name of the variable.

0
Не, @Ed, што я хачу шэраг зменных, якія ўсе маюць розныя імёны. Я буду выкарыстоўваць масіў [лік] для розных мэтаў на працягу цыклу, таму неабходна падзяліць зменныя з масіва.
дададзена аўтар Dimitri Vorontzov, крыніца
Я хачу зрабіць нешта накшталт гэтага: Var my_array0 = новы малюнак (); my_array0.src = my_array [0];
дададзена аўтар Dimitri Vorontzov, крыніца
Але ў больш агульным плане, @Ed, я хачу, каб мець магчымасць дынамічна імя зменнай ўнутры цыклу, выкарыстоўваючы значэнне лічыльніка як частка імя зменнай. Ці магчыма гэта наогул?
дададзена аўтар Dimitri Vorontzov, крыніца
Верагодна, гэта добры спосаб зрабіць гэта, @Ed, але маё пытанне застаецца: як выкарыстоўваць зменную лічыльніка як частка імя іншай зменнай ўнутры цыкла?
дададзена аўтар Dimitri Vorontzov, крыніца
Я эксперыментаваў з рознымі магчымымі рашэннямі, і ваша прапанова выкарыстоўваць два масіва, @Ed, з'яўляецца лепшым варыянтам. Я павінен быў прыняць адказ, які найбольш непасрэдна звяртаецца мой першапачатковы пытанне, але вы прымусілі мяне пераасэнсаваць тое, як я падышоў да гэтай праблемы, і я вельмі цаню гэта. Ваша прапанова было рашэнне.
дададзена аўтар Dimitri Vorontzov, крыніца
@Figaro праверыць мой мат адказу, але Ed мае кропку.
дададзена аўтар Sharky, крыніца
хто клапоціцца, каб растлумачыць, чаму мой адказ StackOverflow. кім/пытанні/16839033/& hellip; з'яўляецца downvoted ????
дададзена аўтар Sharky, крыніца
Вам трэба зрабіць my_array [лік] замест вар my_array + лічыльнік
дададзена аўтар karthikr, крыніца
@Figaro - дзякуй! Поспехаў.
дададзена аўтар Ed Plunkett, крыніца
Не рабіце гэтага. Гэта тое, што масівы для. Яны значна прасцей у выкарыстанні. Гэта выдатна, каб паспрабаваць думаць аб уласных новых шляхах вырашэння праблем, але гэта адна не добрая ідэя. Гэта досыць цяжка, каб навучыцца праграмаваць, не спрабуючы зрабіць што-то мова не хоча, каб ты.
дададзена аўтар Ed Plunkett, крыніца
Малюнкі не з'яўляецца масівам. Чаму вы пакласці малюнак у зменную з імем «my_array0»? Вы хочаце, каб два масіва: вар IMAGESRC = новы Array (10); вар выява = новы масіў (10); Занясення IMAGESRC [0] праз IMAGESRC [9] з URL-адрасоў, а затым запоўніць малюнкі з выявамі, а затым прысвоіць ўласцівасці .src.
дададзена аўтар Ed Plunkett, крыніца
Што вы спрабуеце зрабіць? Чаму вы хочаце, шэраг зменных з рознымі імёнамі? Калі вы хочаце, дзесяць рэчаў, змясціць іх у масіў. Калі вы хочаце, каб пакласці нешта яшчэ ў іншым масіве, стварыць другі масіў.
дададзена аўтар Ed Plunkett, крыніца
Чаму вы хочаце, шэраг зменных з гэтымі імёнамі? Што вы спрабуеце дасягнуць тут? Калі вы хочаце дзесяць масіваў, стварыць дзесяць масіваў і змясціць іх у іншы масіў. Вы ведаеце, што такое масіў? Гэта рэч, якая ўтрымлівае спіс мноства іншых рэчаў.
дададзена аўтар Ed Plunkett, крыніца

8 адказы

Калі вы хочаце ўсталяваць элементы масіва, выкарыстоўвайце [] Сінтаксіс:

var my_array = new Array(10);

for (var count=0; count

Акрамя таго, пры ўказанні толькі элемент масіва, а не сам масіў, падзенне вар перад ім!

5
дададзена
Дзякуй, @Sirko!
дададзена аўтар Dimitri Vorontzov, крыніца
Спрабаваў акно [лік], @Sirko, ён робіць тое, што я хачу, каб гэта зрабіць, але гэта запавольвае загрузку старонкі значна. Як бы вы звязаць зменныя </гэтага кода> - гэта [лік] , або якім-небудзь іншым спосабам?
дададзена аўтар Dimitri Vorontzov, крыніца
Падобна на тое, крок у правільным кірунку, @Sirko. Гэта менавіта тое, што я хачу зрабіць, зменныя з «дынамічнымі імёнамі», але я думаю, што я хачу іх лакальны характар ​​- як я магу гэта зрабіць?
дададзена аўтар Dimitri Vorontzov, крыніца
Гэта было б відавочнае рашэнне, але гэта не тое, што я хачу, па цэлым шэрагу прычын. Я на самой справе хачу, каб уключыць нумар у імя variablem, а не выкарыстоўваць my_array [лік].
дададзена аўтар Dimitri Vorontzov, крыніца
@Figaro Калі вы хочаце стварыць зменныя з «дынамічнымі імёнамі» вам спатрэбіцца паказальнік на сферу, дзе вы хочаце дадаць іх. Калі гэта глабальны маштаб, напрыклад, вы маглі б замяніць my_array з акно ўнутры для завесы, каб стварыць глабальныя зменныя адпаведнае імя.
дададзена аўтар Sirko, крыніца
@Figaro адпраўной кропкай можа быць адказы ў гэтае пытанне , але я не ведаю эквівалент акно аб'ект для вобласці бачнасці функцыі. Вы маглі б, магчыма, звязаць свае зменныя </гэтага кода>.
дададзена аўтар Sirko, крыніца
@Figaro Як шмат разоў згадвалася ў каментарах, гэта не добры падыход у цэлым. Проста выкарыстоўвайце аб'ект або масіў і змясціць усе зменныя там. Але так, гэта [лік ] павінен працаваць, але, магчыма, мае некаторыя пабочныя эфекты, вы не хочаце (гл арыентацыю аб'екта ў JS для чаго гэта [х] , як правіла, выкарыстоўваецца).
дададзена аўтар Sirko, крыніца

Што такое правільны спосаб наймення зменнай ўнутры цыкла? Вы не робіце.

Калі вы проста хочаце, пераменная утрымліваць гэтую асаблівую каштоўнасць, проста выкарыстоўвайце звычайную зменную. Калі вы хочаце шмат розных значэнняў, ўставіць яго ўнутры масіва або аб'екта. Але гэта залішнім, так як тут у вас ужо ёсць масіў, так што я на самой справе не ўпэўнены, што вы спрабуеце дасягнуць.

2
дададзена

Гэтая карціна выклікае сумневы, а масіў здаецца непатрэбным; Аднак, тут ёсць адзін спосаб зрабіць гэта:

var my_array = new Array(10);

for (var count = 0; count < my_array.length; count++) {
  window['my_array' + count] = "This is a variable number " + count + ".";
  document.write(window['my_array' + count]);
}
2
дададзена
Дзякуй, @Noah!
дададзена аўтар Dimitri Vorontzov, крыніца

And if none of the previous answers suits you, you can always use eval()

var varName = 'my_array'
for (var count=0; count

Edit: @Noah Фрейтас забяспечвае лепшы адказ, без выкарыстання Eval() .

1
дададзена

Вы пераазначэнне my_array ўнутры цыклу, і не мае доступу да зменнай правільна небудзь. спроба:

var my_array = new Array(10);

for (var count=0; count

JS Fiddle

0
дададзена
var my_array = new Array(10);

for (var count=0; count

http://jsfiddle.net/pe97W/4/

0
дададзена
downvote? для чаго? OP кажа «EDIT: Я ведаю, што я мог бы выкарыстаць my_array [лік], але гэта не тое, што я шукаю Што мне трэба, каб быць у стане назваць зменную ўнутры цыклу, выкарыстоўваючы індэкс як частка ад імя. пераменная «. таксама кажа «але маё пытанне застаецца: як выкарыстоўваць зменную лічыльніка як частка імя іншай зменнай ўнутры цыклу» --i адказаў на яго пытанне, у першую чаргу. І гэта downvoting?
дададзена аўтар Sharky, крыніца

Вы не можаце <�моцны> выканаць на левай баку аператара прысвойвання ( = ), вы можаце толькі <�моцны> правапераемнікам . <�Моцны> Выкананне , у JavaScript, адбываецца на правай баку.

var my_array = new Array(10);
var var_hashmap = {};//create a new object to hold our variables.

for (var count = 0; count < my_array.length; count++) {
    var key = "my_array" + count;
    var value = "This is a variable number " + count + ".";
    var_hashmap[key] = value;
    document.write(var_hashmap[key]);
};
0
дададзена

Вы павінны выкарыстоўваць масіў.

var myarray = new Array();
myarray[0] = "1";
myarray[1] = "2";
myarray[2] = "3";
0
дададзена