Autor Zpráva
mark92
Profil
zdravím, ako sa prosím vás kopíruje obsah dvojrozmerného poľa do druhej premennej? problém je v tom, že v tomto kóde...:
var a = [[1,2],[3,4]];
var b = a;
b [0][0] = 5;
return(a);

... mi vráti pole [[5,2],[3,4]] ... dosť ma zarazilo, keď som zistil, ze príkaz b = a nerobí len jednoduché prenesenie hodnôt jedného poľa do druhého, ale robí aj to, že v prípade zmeny nejakej hodnoty v poli b, zmení aj hodnotu v poli a... ako potom preniesť hodnoty poľa a do premennej b tak, aby tam nevznikalo to púto medzi poľami? je na to nejaký príkaz?
Hľadal som na googli, našiel som príkaz Array.slice();, ale funguje len na jednorozmerné polia... ďakujem
Witiko
Profil
Budeš muset projít první úroveň pole cyklem. Pole je objekt, předává se pointer, ne data.
_es
Profil
Pre dvorozmerné "neriedke" pole:
var b = a.slice();
for(var i = 0; i < b.length; i++) b[i] = b[i].slice();
Pre riedke pole, teda niektoré indexy chýbajú, by bolo treba ošetriť neexistujúce indexy.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: