Autor | Zpráva | ||
---|---|---|---|
Witiko Profil * |
Mám menší otázku, občas se mi ve scriptech stává, že potřebuju zkopírovat obsah jednoho pole do druhého, nicméně zkopíruji pouze odkaz na druhé pole.
var pole_jedna = new Array(); var pole_dva=new Array(); pole_jedna[0] = "text v poli 1"; pole_dva = pole_jedna; pole_jedna[0] = "text v poli 1 jiný"; alert(pole_dva[0]); // Alert vyhodí "text v poli 1 jiný" var pole_jedna = new Array(); var pole_dva=new Array(); pole_jedna[0] = "text v poli 1"; pole_dva = pole_jedna.join(",").split(","); pole_jedna[0] = "text v poli 1 jiný"; alert(pole_dva[0]); // Alert vyhodí "text v poli 1", správně tedy dojde k uložení obsahu Array a ne jen odkazu na něj, dříve jsem řešil for cyklem, který veškerý obsah Array zapsal do nového Array. Zajímalo by mě, jestli je zde nějaký elegantnější způsob, přijde mi to jako obcházení. Nejspíš chápu, proč k problému dochází. Důvod bude pravděpodobně stejný, jako proč na [] == [] vyhazuje javascript false, Array je braný jako objekt, každé pole je instancí objektu, místo obsahu tedy kopíruji pouze odkaz na daný objekt, stejně mě ale zajímá, jestli není nějaké lepší řešení. Moderátor Chamurappi: Titulek „2 Arrays one value“ jednak nebyl česky, jednak ani nedával smysl.
|
||
fajzen Profil |
#2 · Zasláno: 23. 1. 2010, 12:54:09
Witiko:
var pole_jedna = new Array('a', 'b', 'c'); var pole_dva = pole_jedna.slice(0); |
||
Witiko Profil * |
#3 · Zasláno: 23. 1. 2010, 12:59:57
To je pořád přepis, ačkoliv uznávám, že lepší. Žádný elegantnější způsob neexistuje?
|
||
fajzen Profil |
#4 · Zasláno: 23. 1. 2010, 13:09:24
Witiko:
aký prepis? Metóda slice(index) vráti pole prvkov od indexu index, nie len ten daný prvok... |
||
Witiko Profil * |
#5 · Zasláno: 23. 1. 2010, 13:19:45
Já vím, co to dělá. Jen jsem myslel, že je tu nějaký speciální způsob zápisu, který ještě neznám, protože tenhle způsob kopírování polí mi přijde jako opis.
|
||
Witiko Profil * |
#6 · Zasláno: 23. 1. 2010, 15:07:03
Navíc pokud mám vícerozměrné pole, tak se stejně bez řešení cyklem neobejdu. Skutečně neexistuje jiný způsob jak v javascriptu zkopírovat obsah pole?
|
||
fajzen Profil |
#7 · Zasláno: 23. 1. 2010, 23:43:32
Witiko:
pokiaľ viem, nič také v JS neexistuje |
||
Witiko Profil * |
#8 · Zasláno: 24. 1. 2010, 18:52:37
Tak to je ale potom celkem nedomyšlený koncept, pokud to porovnáme s jinýmy jazyky.
|
||
_es Profil |
#9 · Zasláno: 24. 1. 2010, 19:11:43
Witiko:
„Skutečně neexistuje jiný způsob jak v javascriptu zkopírovat obsah pole?“ Môžeš si ten spôsob dorobiť: Array.prototype.copy = function(){/*kód kopírujúci obsah poľa (cez this)*/}; Použitie pre pole p: var p2 = p.copy(); |
||
Witiko Profil * |
#10 · Zasláno: 24. 1. 2010, 20:04:45
Tak jsem to taky udělal. :)
|
||
Časová prodleva: 14 let
|
0