Mere
Kopier array efter værdi
Når du kopierer et array i JavaScript til et andet array:
var arr1 = ['a','b','c'];
var arr2 = arr1;
arr2.push('d'); //Now, arr1 = ['a','b','c','d']
Jeg indså, at arr2
refererer til det samme array som arr1
, snarere end til et nyt, uafhængigt array. Hvordan kan jeg kopiere arrayet for at få to uafhængige arrays?
1635
3
Brug dette:
Grundlæggende klonerer
slice()
operationen arrayet og returnerer en reference til et nyt array.Bemærk også, at:
For referencer, strenge og tal (og ikke det faktiske objekt) kopierer
slice()
objektreferencer til det nye array. Både det oprindelige og det nye array refererer til det samme objekt. Hvis et objekt med reference ændres, er ændringerne synlige for både det nye og det oprindelige array.Primitives som strenge og tal er uforanderlige, så ændringer i strengen eller tallet er umulige.
Der er ikke brug for jQuery... [Arbejdseksempel][1]
Dette kopierer arrayet fra startpositionen
0
til slutningen af arrayet.Det er vigtigt at bemærke, at det vil fungere som forventet for primitive typer (streng, tal osv.), og også for at forklare den forventede opførsel for referencetyper...
Hvis du har et array af referencetyper, f.eks. af typen
Object
. Arrayet vil blive kopieret, men begge arrays vil indeholde referencer til de sammeObject
's. Så i dette tilfælde ser det ud som om arrayet kopieres som reference, selv om arrayet faktisk kopieres.Hvis du vil lave en ny kopi af et objekt eller et array, skal du f.eks. eksplicit kopiere objektets egenskaber eller arrayets elementer:
Du kan søge efter flere oplysninger på Google om uforanderlige primitive værdier og foranderlige objektreferencer.