Kopiranje elementov polja v drugo polje
Imam polje JavaScript dataArray
, ki ga želim potisniti v novo polje newArray
. Le da ne želim, da bi bilo newArray[0]
dataArray
. V novo polje želim vstaviti vse elemente:
var newArray = [];
newArray.pushValues(dataArray1);
newArray.pushValues(dataArray2);
// ...
ali še bolje:
var newArray = new Array (
dataArray1.values(),
dataArray2.values(),
// ... where values() (or something equivalent) would push the individual values into the array, rather than the array itself
);
Tako zdaj novo polje vsebuje vse vrednosti posameznih podatkovnih polj. Ali je na voljo kakšna bližnjica, kot je pushValues
, da mi ni treba iterirati čez vsako posamezno dataArray
in dodajati elementov enega za drugim?
846
3
Uporabite funkcijo concat, kot sledi:
Vrednost
newArray
bo[1, 2, 3, 4]
(arrayA
inarrayB
ostaneta nespremenjena;concat
ustvari in vrne novo polje za rezultat).Če vaša polja niso velika (glejte opozorilo spodaj), lahko uporabite metodo
push()
polja, ki mu želite dodati vrednosti. Metodapush()
lahko sprejme več parametrov, zato lahko uporabite njeno metodoapply()
, da posredujete polje vrednosti, ki jih želite dodati, kot seznam parametrov funkcije. Prednost tega je, da v primerjavi z uporabo funkcijeconcat()
dodajamo elemente v polje na mestu, namesto da ustvarjamo novo polje.Vendar se zdi, da pri velikih poljih (100.000 članov ali več) ta trik lahko odpove**. Za taka polja je boljši pristop uporaba zanke. Za podrobnosti glejte https://stackoverflow.com/a/17368101/96100.
Morda boste želeli to posplošiti v funkcijo:
... ali pa jo dodajte prototipu
Array
's:... ali pa posnemite izvirno metodo
push()
tako, da dovolite več parametrov, pri čemer uporabite dejstvo, daconcat()
, tako kotpush()
, dovoljuje več parametrov:Tukaj je različica zadnjega primera, ki temelji na zanki in je primerna za velika polja in vse glavne brskalnike, vključno z IE
Ali to rešuje vaš problem ?