Báwo ni a ṣe lè daakọ tàbí fẹ̀ síi àkójọpọ̀ kan?

Imudojuiwọn to kẹhin: 11/10/2023
Òǹkọ̀wé: Sebastian Vidal

Ni idagbasoke software, arrays tabi awọn akojọpọ ṣe aṣoju apakan pataki ti siseto. Wọn jẹ awọn ẹya data ti o gba wa laaye lati tọju awọn akojọpọ alaye labẹ orukọ kanna, irọrun ifọwọyi ati iraye si data. Eyikeyi iwọn ati iru data, awọn akoko nigbagbogbo wa nigbati awọn olutọpa nilo daakọ tabi faagun ohun orun. Ninu nkan ti o tẹle, a yoo dojukọ lori ṣiṣe alaye ni kikun bi a ṣe le ṣe awọn iṣẹ wọnyi ni awọn ede siseto oriṣiriṣi.

Loye iwulo lati daakọ tabi faagun orun kan

Ninu siseto, a nigbagbogbo rii ara wa ni awọn ipo nibiti a nilo daakọ tabi faagun ohun orun. Fun apẹẹrẹ, a le nilo lati fi ẹda kan pamọ ti ohun orun lati ṣe awọn iṣẹ lai yi pada awọn atilẹba orun. Tabi boya, titobi wa ti di kikun ati pe a nilo lati mu iwọn rẹ pọ si lati fi awọn eroja diẹ sii. Fun awọn iṣẹlẹ wọnyi, iṣẹ ti didakọ tabi faagun akojọpọ jẹ pataki. Iṣẹ yii kii ṣe iṣẹ nikan lati daakọ tabi mu iwọn titobi pọ si, ṣugbọn o tun le ṣe iranlọwọ fun wa lati dinku lilo iranti nipa titoju data pataki nikan.

Ti a ba tun wo lo, Ó tọ́ sí i mencionar que Awọn eto ni Java jẹ awọn nkan ti ko le yipada, iyẹn ni, ni kete ti a ti ṣẹda akojọpọ, iwọn rẹ ko le yipada. Lati “faagun” akojọpọ kan ni Java, a ni lati ṣẹda titobi nla tuntun kan lẹhinna daakọ awọn eroja ti orun atilẹba si tuntun. Eleyi le jẹ a bit tedious, ṣugbọn awọn ọna wa ni itumọ ti sinu Java boṣewa ìkàwé bi System.arraycopy() y Arrays.copyOf() ti o le dẹrọ ilana yii. Fun awọn ede ti o mu awọn ẹya data ti o ni agbara, gẹgẹbi JavaScript tabi Python, ilana naa rọrun pupọ ati pe awọn ọna wa bii push() y append() ti o gba awọn eroja laaye lati ṣafikun si opo ti o wa laisi nini lati ṣẹda tuntun kan.

Iyasoto akoonu - Tẹ Nibi  Ṣé Dreamweaver jẹ́ ọ́fíìsì ọ̀fẹ́?

Wiwa sinu Awọn ọna lati daakọ Awọn akopọ ni Javascript

Ọna ti o wọpọ julọ lati daakọ tabi ṣe pidánpidán orun ni Javascript ni lati lo ọna bibẹ ().. Ọna yii da ẹda aijinile ti orun pada lati inu isale ti a ṣẹda laarin awọn atọka ibẹrẹ ati ipari. Ko ṣe atunṣe titobi atilẹba ati pe o ya sọtọ ti o daakọ patapata lati ori ipilẹ atilẹba. O ṣe pataki lati ṣe akiyesi pe nigba didakọ awọn nkan laarin akojọpọ, awọn itọkasi ni a ṣẹda si awọn ohun atilẹba dipo ṣiṣẹda awọn iṣẹlẹ tuntun. Eyi tumọ si pe ti o ba ṣe atunṣe nkan naa ni titobi ti a daakọ, yoo tun ṣe atunṣe ni titobi atilẹba. Eyi ni diẹ ninu koodu lati ṣapejuwe:


let arrayOriginal = ['a', 'b', 'c', 'd', 'e'];
let arrayCopia = arrayOriginal.slice();

Si lo que necesitas es faagun ohun orun, JavaScript ó fún wa ní awọn ọna pupọ lati ṣe. Ọna kan ni lati lo oniṣẹ ẹrọ itankale. Oṣiṣẹ yii n gba ọ laaye lati faagun awọn eroja iterable laarin titobi lati ṣẹ̀dá orun tuntun ti o ni awọn eroja ti ipilẹṣẹ atilẹba ati awọn eroja afikun. Ọna miiran jẹ ọna concat (), eyi ti o da ọna tuntun pada ti o jẹ abajade ti didapọ mọ orun atilẹba pẹlu ọkan tabi diẹ sii awọn ọna tabi awọn iye. Lakotan, o tun le lo ọna titari () eyiti o ṣafikun ọkan tabi diẹ ẹ sii awọn eroja si ipari ti opo kan ati da ipari gigun tuntun ti orun pada. Nibi o ni àwọn àpẹẹrẹ díẹ̀:


let array1 = [1, 2, 3];
let array2 = [...array1, 4, 5, 6]; // array2 ahora es [1, 2, 3, 4, 5, 6]


let array3 = [1, 2, 3];
let array4 = array3.concat([4, 5, 6]); // array4 ahora es [1, 2, 3, 4, 5, 6]


let array5 = [1, 2, 3];
array5.push(4, 5, 6); // array5 ahora es [1, 2, 3, 4, 5, 6]

Faagun ohun orun: Awọn ilana iṣeduro ati awọn aṣayan miiran

Imugboroosi ohun orun jẹ iṣẹ-ṣiṣe ti o wọpọ ni siseto, paapaa nigbati o ba de titoju ati ifọwọyi awọn oye nla ti data. Sibẹsibẹ, iṣẹ-ṣiṣe le jẹ nija ti awọn ilana ti o tọ ko ba mọ. Nibi, a yoo jiroro diẹ ninu awọn imọran ti a ṣeduro ati awọn aṣayan miiran fun faagun titobi kan. Ni akọkọ, o le lo iṣẹ naa Array.prototype.concat(). Iṣẹ yi daapọ meji tabi diẹ ẹ sii orun nínú ẹyọ kan matrix. Pẹlupẹlu, ko ṣe atunṣe awọn matrices atilẹba, èyí tí ó túmọ̀ sí wípé data iyege ti wa ni dabo. Eyi jẹ apẹẹrẹ ti bii o ṣe le lo Array.prototype.concat():


let array1 = [1, 2, 3];
let array2 = [4, 5, 6];
let newArray = array1.concat(array2);

// newArray ahora es [1, 2, 3, 4, 5, 6]

Aṣayan miiran ni lati lo ilana oniṣẹ ẹrọ tànkálẹ̀ (…) . Oniṣẹ ẹrọ yii ngbanilaaye lati mu awọn eroja lati orun ki o gbe wọn sinu opo tuntun kan. Ko dabi Array.prototype.concat (), oniṣẹ ẹrọ itankale ṣiṣẹ daradara pẹlu awọn ọna ati awọn nkan. O tun le ṣee lo lati da ohun orun. Eyi ni apẹẹrẹ ti bii o ṣe le lo oniṣẹ ẹrọ itankale:


let array1 = [1, 2, 3];
let newArray = [...array1, 4, 5, 6];

// newArray ahora es [1, 2, 3, 4, 5, 6]

Ni ipari, yiyan iru ọna lati lo yoo dale lori awọn iwulo pato ti iṣẹ akanṣe rẹ. Sibẹsibẹ, mejeeji Array.prototype.concat () ati oniṣẹ ẹrọ itankale jẹ awọn ilana ti o munadoko fun faagun awọn akojọpọ.

Iyasoto akoonu - Tẹ Nibi  Ṣé mo lè lo àpù Grab kárí ayé?

Isakoso orun to munadoko: Awọn ilolu fun Iṣe koodu

Nigbati o ba n mu awọn akojọpọ, a ti awọn mọlẹbi O wọpọ julọ ni ẹda tabi itẹsiwaju ti awọn wọnyi. Sibẹsibẹ, o ṣe pataki lati mọ bi a ṣe le ṣe awọn iṣẹ wọnyi daradara lati rii daju iṣẹ koodu to dara. Nitorinaa, a yoo ṣe itupalẹ awọn ọna akọkọ meji: Array.prototype.slice() y Array.prototype.concat().

Nigba ti a ba nilo lati daakọ akojọpọ, a le lo iṣẹ naa slice(). Ọna yii n gba wa laaye lati ṣẹda ẹda aijinile ti apakan ti orun sinu ohun tuntun tuntun. Lati ṣe ẹda pipe ti titobi wa, a rọrun lo bibẹ laisi eyikeyi awọn ariyanjiyan, bii eyi:

var atilẹba = [1, 2, 3, 4, 5]; var daakọ = original.slice ();

Eyi yoo fun wa ni akojọpọ 'daakọ' tuntun pẹlu awọn iye kanna bi ipilẹ 'atilẹba'. Sibẹsibẹ, o gbọdọ ṣe akiyesi pe ọna yii kii ṣe imudara julọ fun awọn akojọpọ nla bi o ṣe le ja si lilo iranti ti o pọ ju ati idinku ti koodu naa.

Iyasoto akoonu - Tẹ Nibi  Bawo ni a ṣe le yi ipa ọna faili afẹyinti pada nipa lilo AOMEI Backupper Standard?

Nipa awọn eto imugboroja, a daba ni lilo iṣẹ naa concat(). Ọna yii ni a lo lati dapọ awọn ọna meji tabi diẹ sii ati da opo tuntun pada. Ẹ jẹ́ ká fojú inú wò ó pé a ní ‘array1’ àti ‘array2’ méjì tí a fẹ́ darapọ̀ mọ́. Nitorina, a le lo concat bi atẹle:

var array1 = [1, 2, 3]; var array2 = [4, 5, 6]; var tesiwaju = array1.concat (array2);

Eyi yoo da akojọpọ 'fikun' pada pẹlu awọn iye [1, 2, 3, 4, 5, 6]. Rii daju lati ranti pe, nigba ti concat jẹ nla fun didapọ awọn akojọpọ kekere, o le jẹ iranti pupọ nigbati o ba n ba awọn iṣọpọ nla.