Jump to content
php.lv forumi

Masīva sadalīšana pa x elementiem


Stopp

Recommended Posts

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

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

×
×
  • Create New...