У распрацоўцы праграмнага забеспячэння, arrays або масівы ўяўляюць істотную частку праграмавання. Гэта структуры даных, якія дазваляюць нам захоўваць наборы інфармацыі пад адным і тым жа імем, палягчаючы маніпуляцыі і доступ да даных. Незалежна ад памеру і тыпу даных, праграмістам заўсёды патрэбныя моманты скапіяваць або разгарнуць масіў. У наступным артыкуле мы падрабязна растлумачым, як выконваць гэтыя аперацыі на розных мовах праграмавання.
Разуменне неабходнасці капіравання або пашырэння масіва
У праграмаванні мы часта трапляем у сітуацыі, калі нам гэта патрэбна скапіяваць або разгарнуць масіў. Напрыклад, нам можа спатрэбіцца захаваць копію масіва для выканання аперацый без змены зыходнага масіва. Ці, магчыма, наш масіў запоўніўся, і нам трэба павялічыць яго памер, каб дадаць больш элементаў. Для гэтых выпадкаў аперацыя капіравання або пашырэння масіва вельмі важная. Гэтая функцыя не толькі служыць для капіравання або павелічэння памеру масіва, але яна таксама можа дапамагчы нам паменшыць выкарыстанне памяці, захоўваючы толькі неабходныя дадзеныя.
З іншага боку, гэта таго варта mencionar que Масівы ў Java з'яўляюцца нязменнымі аб'ектамі, гэта значыць пасля стварэння масіва яго памер не можа змяніцца. Каб «пашырыць» масіў у Java, нам трэба было б стварыць новы большы масіў, а затым скапіяваць элементы зыходнага масіва ў новы. Гэта можа быць трохі стомна, але ёсць метады, убудаваныя ў стандартную бібліятэку Java, напрыклад System.arraycopy() y Arrays.copyOf() што можа палегчыць гэты працэс. Для моў, якія апрацоўваюць дынамічныя структуры даных, такіх як JavaScript або Python, працэс нашмат прасцей, і ёсць такія метады, як push() y append() якія дазваляюць дадаваць элементы ў існуючы масіў без неабходнасці стварэння новага.
Паглыбляючыся ў метады капіравання масіваў у Javascript
Найбольш распаўсюджаным спосабам капіявання або дублявання масіва ў Javascript з'яўляецца выкарыстанне метад slice().. Гэты метад вяртае неглыбокую копію масіва з падмасіва, створанага паміж пачатковым і канчатковым індэксамі. Ён не змяняе зыходны масіў і цалкам ізалюе скапіраваны масіў ад зыходнага масіва. Важна адзначыць, што пры капіраванні аб'ектаў у масіве ствараюцца спасылкі на зыходныя аб'екты замест стварэння новых асобнікаў. Гэта азначае, што калі вы зменіце аб'ект у скапіраваным масіве, ён таксама будзе зменены ў зыходным масіве. Вось код для ілюстрацыі:
let arrayOriginal = ['a', 'b', 'c', 'd', 'e'];
let arrayCopia = arrayOriginal.slice();
Si lo que necesitas es разгарнуць масіў, 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() і аператар распаўсюджвання з'яўляюцца эфектыўнымі метадамі для пашырэння масіваў.
Эфектыўнае кіраванне масівам: наступствы для прадукцыйнасці кода
Пры апрацоўцы масіваў, a акцый Найбольш распаўсюджаным з'яўляецца іх копія або пашырэнне. Аднак вельмі важна ведаць, як выконваць гэтыя аперацыі эфектыўна каб забяспечыць добрую прадукцыйнасць кода. Такім чынам, мы збіраемся прааналізаваць два асноўных метаду: Array.prototype.slice() y Array.prototype.concat().
Калі нам трэба скапіяваць масіў, мы можам выкарыстоўваць функцыю slice(). Гэты метад дазваляе нам стварыць неглыбокую копію часткі масіва ў новы аб'ект масіва. Каб зрабіць поўную копію нашага масіва, мы проста выкарыстоўваем slice без аргументаў, напрыклад:
зыходная вар. = [1, 2, 3, 4, 5]; var copy = original.slice();
Гэта дасць нам новы масіў «копіі» з тымі ж значэннямі, што і масіў «арыгінал». Аднак трэба ўлічваць, што гэты метад не самы эфектыўны для вялікіх масіваў, бо можа прывесці да празмернага выкарыстання памяці і запаволення кода.
Што тычыцца пашырэння масіваў, мы прапануем выкарыстоўваць функцыю concat(). Гэты метад выкарыстоўваецца для аб'яднання двух або больш масіваў і вяртае новы масіў. Давайце ўявім, што ў нас ёсць два масівы 'array1' і 'array2', якія мы хочам аб'яднаць. Такім чынам, мы можам выкарыстоўваць concat наступным чынам:
зменны масіў1 = [1, 2, 3]; var array2 = [4, 5, 6]; var extended = array1.concat(array2);
Гэта верне "пашыраны" масіў са значэннямі [1, 2, 3, 4, 5, 6]. Абавязкова памятайце пра гэта, пакуль concat выдатна падыходзіць для аб'яднання невялікіх масіваў, ён можа спажываць шмат памяці пры працы з вялікімі масівамі.
Я Себасцьян Відаль, камп'ютэрны інжынер, які захапляецца тэхналогіямі і сваімі рукамі. Акрамя таго, я з'яўляюся стваральнікам tecnobits.com, дзе я дзялюся падручнікамі, каб зрабіць тэхналогіі больш даступнымі і зразумелымі для ўсіх.