Vairāk
Masu elementu kopēšana citā masīvā
Man ir JavaScript masīvs dataArray
, kuru es gribu ievietot jaunā masīvā newArray
. Tikai es nevēlos, lai newArray[0]
būtu dataArray
. Es gribu ievietot visus elementus jaunajā masīvā:
var newArray = [];
newArray.pushValues(dataArray1);
newArray.pushValues(dataArray2);
// ...
vai vēl labāk:
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
);
Tātad tagad jaunais masīvs satur visas atsevišķo datu masīvu vērtības. Vai ir pieejams kāds saīsinājums, piemēram, pushValues
, lai man nebūtu jāpārlasa katrs atsevišķs dataArray
, pievienojot elementus pa vienam?
846
3
Izmantojiet funkciju concat, piemēram, šādi:
newArray
vērtība būs[1, 2, 3, 4]
(arrayA
unarrayB
paliek nemainīgi;concat
izveido un atdod jaunu masīvu kā rezultātu).Ja jūsu masīvi nav lieli (sk. tālāk), varat izmantot
push()
metodi tam masīvam, kuram vēlaties pievienot vērtības.push()
var pieņemt vairākus parametrus, tāpēc jūs varat izmantot tāsapply()
metodi, lai nodotu pievienojamo vērtību masīvu kā funkcijas parametru sarakstu. Tā ir priekšrocība, ka, salīdzinot arconcat()
izmantošanu, elementi tiek pievienoti masīvam uz vietas, nevis tiek izveidots jauns masīvs.Tomēr šķiet, ka lieliem masīviem (ar 100 000 vai vairāk locekļu) šis triks var neizdoties. Šādiem masīviem labāka pieeja ir izmantot cilpu. Sīkāku informāciju sk. https://stackoverflow.com/a/17368101/96100.
Iespējams, jūs vēlēsieties to vispārināt funkcijā:
... vai pievienot to
Array
's prototipam:... vai atdarināt oriģinālo
push()
metodi, atļaujot vairākus parametrus, izmantojot to, kaconcat()
, tāpat kāpush()
, atļauj vairākus parametrus:Lūk, pēdējā piemēra uz cilpu balstīta versija, kas piemērota lieliem masīviem un visām galvenajām pārlūkprogrammām, ieskaitot IE
Vai tas atrisina jūsu problēmu ?