Stopp Posted January 27, 2007 Report Share Posted January 27, 2007 Lieta tāda. Man ir masīvs ar x elementiem. Gribu no tā izveidot 2 stringus - pirmo ar elementiem no pirmā līdz priekšpēdējam (matemātiski [0;x-2]), un otru - masīva pēdējo elementu. Mēģināju šādi var arr; var cits_arr=arr; cits_arr[arr.length-1]=''; var viens=cits_arr.join(seperator); // pirmais strings var divi=arr[arr.length-1]; // otrais Bet šis nestrādā, t.i. izmainot cits_arr pēdējo elementu, izmainās arī arr pēdējais elements, kā rezultātā otrais strings iznāk tukšs. Var jau, protams, to pirmo stringu veidot ar ciklu, bet varbūt ir kāds sakarīgāks veids? Un vispār, kāpēc tā notiek? Paldies. Link to comment Share on other sites More sharing options...
bubu Posted January 27, 2007 Report Share Posted January 27, 2007 Tāpēc, ka JS'ā, tāpat kā PHP5, visi objekti pēc defaultā tiek piešķirti pēc references (pēc pointera). Reāli rindiņa var cits_arr=arr; neuztaisa jaunu masīvu, bet uztaisa tikai jaunu pointeri uz esošo. var arr = [1,2,3]; var cits_arr = arr.slice(0); // uztaisa pilnu kopiju var last = cits_arr.pop(); // izvāc pēdējo elementu ārā alert(cits_arr); alert(last); RTFM :) Link to comment Share on other sites More sharing options...
Stopp Posted January 27, 2007 Author Report Share Posted January 27, 2007 (edited) O, paldies, beidzot ir poņa. Edited January 27, 2007 by Stopp Link to comment Share on other sites More sharing options...
Recommended Posts