Javascript
let mallitaulukko = [ {"foo": "bar"}, {"foo": "foo"}, {"foo": "foobar"}, {"foo": "barfoo"} ]; let kopio = []; // kaikki seuraavat tekevät shallow-kopion edellisestä taulukosta for (let malli of mallitaulukko) { kopio.push(malli); } // tai toinen vaihtoehto kopio = Array.from(mallitaulukko); // tai kopio =[...mallitaulukko]; // tai kopio = mallitaulukko.slice(); // seuraava on väärin EIKÄ tee kopiota taulukosta // tämä kopioi vain saman taulukon viitteen toiseen muuttujaan // kopio = mallitaulukko; // sort muuttaa suoraan kyseistä taulukkoa eli kopio järjestyy uudelleen: kopio.sort( (a, b) => a.foo.localeCompare(b.foo, 'fi', {sensitivity: 'base'})); console.log("malli", mallitaulukko); console.log("kopio", kopio); //mallitaulukko: [{"foo":"bar"},{"foo":"foo"},{"foo":"foobar"},{"foo":"barfoo"}] //kopio: [{"foo":"bar"},{"foo":"barfoo"},{"foo":"foo"},{"foo":"foobar"}] // koska kopiot ovat shallow, on kopioissa kuitenkin viittaukset // samoihin objekteihin kuin alkuperäisessä taulukossa // muutetaan kopion toisen alkion (indeksi 1) sisältöä. Samalla muuttuu mallitaulukon // viimeisen alkion sisältö. Sortin jälkeen alkiot ovat kopiossa eri järjestyksessä, mutta // viittaukset alkuperäisiin ovat edelleen olemassa kopio[1]["foo"] = "testi"; console.log("malli", mallitaulukko); console.log("kopio", kopio); //malli [{"foo":"bar"},{"foo":"foo"},{"foo":"foobar"},{"foo":"testi"}] //kopio [{"foo":"bar"},{"foo":"testi"},{"foo":"foo"},{"foo":"foobar"}] // tehdään deep copy. Tämä täytyy aina kirjoittaa joka tietorakennetta vastaavaksi kopio = Array.from(mallitaulukko, function(obj) { // palautetaan uusi objekti johon kopioidaan vanhan sisältö return {"foo": obj.foo}; }); // nyt muuttuu vain kopio kopio[3]["foo"] = "testi2"; console.log("malli", mallitaulukko); console.log("kopio", kopio); //malli [{"foo":"bar"},{"foo":"foo"},{"foo":"foobar"},{"foo":"testi"}] //kopio [{"foo":"bar"},{"foo":"foo"},{"foo":"foobar"},{"foo":"testi2"}] //jos kopioitava rakenne ei sisällä sisäkkäisiä viitteitä tai komplekseja erikoisobjekteja niin seuraava toimii kopio = JSON.parse(JSON.stringify(mallitaulukko));
Konsoli