Массивди кантип көчүрүү же кеңейтүү керек?

Акыркы жаңыртуу: 2023-жылдын 11-октябры

Программалык камсыздоону иштеп чыгууда, массивдер же массивдер программалоонун маанилүү бөлүгүн билдирет. Алар бир эле ат менен маалымат топтомун сактоого мүмкүндүк берген маалымат структуралары, манипуляцияны жана маалыматтарга жетүүнү жеңилдетет. Маалыматтын көлөмү жана түрү кандай болбосун, программисттерге керек болгон учурлар ар дайым болот массивди көчүрүү же кеңейтүү. Кийинки макалада биз бул операцияларды ар кандай программалоо тилдеринде кантип аткарууну кеңири түшүндүрүүгө басым жасайбыз.

Массивди көчүрүү же кеңейтүү зарылдыгын түшүнүү

Программалоодо биз көп учурда керектүү кырдаалдарга туш болобуз массивди көчүрүү же кеңейтүү. Мисалы, биз көчүрмөсүн сактоо керек болушу мүмкүн массивдин баштапкы массивди өзгөртпөстөн операцияларды аткарууга. Же, балким, биздин массив толуп калды жана биз көбүрөөк элементтерди кошуу үчүн анын өлчөмүн көбөйтүүбүз керек. Мындай учурларда массивди көчүрүү же кеңейтүү операциясы өтө маанилүү. Бул функция массивдин көлөмүн көчүрүү же көбөйтүү үчүн гана кызмат кылбастан, керектүү маалыматтарды гана сактоо менен эстутумду колдонууну азайтууга жардам берет.

Башка жагынан алганда, бул татыктуу айтып өтсөңүз Javaдагы массивдер өзгөрүлгүс объекттер, башкача айтканда, массив түзүлгөндөн кийин, анын өлчөмү өзгөрбөйт. Javaдагы массивди "кеңейтүү" үчүн, биз жаңы чоңураак массив түзүп, андан кийин баштапкы массивдин элементтерин жаңысына көчүрүшүбүз керек. Бул бир аз тажатма болушу мүмкүн, бирок Java стандарттык китепканасында орнотулган ыкмалар бар System.arraycopy() y Arrays.copyOf() бул жеңилдете алат бул процесс. JavaScript же Python сыяктуу динамикалык маалымат структураларын иштеткен тилдер үчүн процесс алда канча жөнөкөй жана ушул сыяктуу ыкмалар бар. push() y append() элементтерди жаңысын түзбөстөн учурдагы массивге кошууга мүмкүндүк берет.

Эксклюзивдүү мазмун - Бул жерди басыңыз  Project Makeover премиум планына жазылуу үчүн кандай баалар сунушталат?

Javascriptте массивдерди көчүрүү ыкмаларын изилдөө

Javascriptте массивди көчүрүүнүн же кайталоонун эң кеңири таралган ыкмасы бул колдонуу slice() ыкмасы. Бул ыкма башталгыч жана аяктоо индекстеринин ортосунда түзүлгөн кичи массивден массивдин тайыз көчүрмөсүн кайтарат. Ал баштапкы массивди өзгөртпөйт жана көчүрүлгөн массивди түпнуска массивден толугу менен обочолотот. Массивдин ичиндеги объекттерди көчүрүүдө жаңы инстанцияларды түзүүнүн ордуна баштапкы объекттерге шилтемелер түзүлөөрүн белгилей кетүү маанилүү. Бул көчүрүлгөн массивдеги объектти өзгөртсөңүз, ал баштапкы массивде да өзгөртүлөт дегенди билдирет. Бул жерде мисал үчүн кээ бир код болуп саналат:


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

Эгер сизге керектүү нерсе болсо массивди кеңейтүүJavaScript ал бизге сунуштайт муну жасоонун бир нече жолу. Бир ыкма - жайылтуу операторун колдонуу. Бул оператор массивдин ичиндеги кайталануучу элементтерди кеңейтүүгө мүмкүндүк берет түзүү баштапкы массивдин элементтерин жана кошумча элементтерди камтыган жаңы массив. Дагы бир ыкма - concat() методу, ал баштапкы массивди бир же бир нече массив же маанилер менен бириктирүүнүн натыйжасы болгон жаңы массивди кайтарат. Акырында, массивдин аягына бир же бир нече элементтерди кошуп, массивдин жаңы узундугун кайтарып берүүчү push() ыкмасын да колдонсоңуз болот. Мына сага кээ бир мисалдар:


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]

Массивди кеңейтүү: Сунушталган техникалар жана башка параметрлер

Массивди кеңейтүү программалоодо кеңири таралган иш, айрыкча чоң көлөмдөгү маалыматтарды сактоо жана башкарууга келгенде. Бирок, туура техникалар билинбесе, тапшырма кыйын болушу мүмкүн. Бул жерде биз массивди кеңейтүү үчүн кээ бир сунушталган ыкмаларды жана башка варианттарды талкуулайбыз. Биринчиден, сиз функцияны колдоно аласыз Array.prototype.concat(). Бул функция эки же андан көп массивди бириктирет бир эле учурда матрица. Мындан тышкары, ал баштапкы матрицаларды өзгөртпөйт, бул дегенди билдирет маалыматтардын бүтүндүгү сакталат. Бул жерде 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]

Дагы бир вариант - оператордун техникасын колдонуу жайылуу (…) . Бул оператор массивден элементтерди алып, аларды жаңы массивге жайгаштырууга мүмкүндүк берет. Array.prototype.concat()дан айырмаланып, жайылтуу оператору массивдер жана объекттер менен жакшы иштейт. Ал массивди көчүрүү үчүн да колдонсо болот. Бул жерде жайылтуу операторун кантип колдонуунун мисалы:


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

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

Акыр-аягы, кайсы ыкманы колдонууну тандоо сиздин долбоордун өзгөчө муктаждыктарына жараша болот. Бирок, Array.prototype.concat() жана жайылтуу оператору массивдерди кеңейтүүнүн эффективдүү ыкмалары болуп саналат.

Эксклюзивдүү мазмун - Бул жерди басыңыз  MacTuneUp Pro менен тажрыйба бөлүшүү үчүн кандай форумдар бар?

Натыйжалуу массивди башкаруу: Коддун аткарылышынын кесепеттери

Массивдерди иштетүүдө, а акциялардын Эң кеңири таралганы - булардын көчүрмөсү же узартылышы. Бирок, бул операцияларды кантип жасоону билүү зарыл натыйжалуу жакшы код аткарууну камсыз кылуу үчүн. Ошондуктан, биз эки негизги ыкмаларды талдоо үчүн бара жатабыз: Array.prototype.slice() функциясы y Array.prototype.concat().

Массивди көчүрүү керек болгондо, функцияны колдоно алабыз тилим(). Бул ыкма массивдин бир бөлүгүнүн тайыз көчүрмөсүн жаңы массив объектине түзүүгө мүмкүндүк берет. Массивибиздин толук дубликатын жасоо үчүн, биз жөн гана аргументсиз кесимди колдонобуз, мисалы:

original var = [1, 2, 3, 4, 5]; var copy = original.slice();

Бул бизге "оригиналдуу" массив менен бирдей мааниге ээ болгон жаңы "көчүрмө" массивди берет. Бирок, бул ыкма чоң массивдер үчүн эң эффективдүү эмес экенин эске алуу керек, анткени ал эстутумдун ашыкча колдонулушуна жана коддун басаңдашына алып келиши мүмкүн.

Эксклюзивдүү мазмун - Бул жерди басыңыз  Zimbra'да окуу квитанцияларын кантип өчүрүү керек?

Массивдерди кеңейтүүгө байланыштуу функцияны колдонууну сунуштайбыз concat(). Бул ыкма эки же андан көп массивдерди бириктирүү үчүн колдонулат жана жаңы массивди кайтарат. Келгиле, бизде кошулгубуз келген "массив1" жана "массив2" эки массивибиз бар деп элестетип көрөлү. Ошентип, биз төмөнкүдөй concat колдоно алабыз:

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

Бул [1, 2, 3, 4, 5, 6] маанилери менен "кеңейтилген" массивди кайтарат. Муну эстен чыгарбоо керек конкат кичинекей массивдерди бириктирүү үчүн эң сонун, чоңураак массивдер менен иштөөдө көп эстутумду талап кылышы мүмкүн.