Բազմաչափ զանգվածներ JavaScript- ում: Երկկողմանի զանգված JavaScript- ում Javascript զանգվածը բազմաչափ է

Այս հոդվածում մենք կանդրադառնանք JavaScript- ի ստանդարտ թվային ինդեքսավորված զանգվածներին: Raանգվածները հայտարարվում են քառակուսի փակագծերի միջոցով.

var fruit = ["Խնձոր", "Նարնջագույն", "Էշ"]

Տարրը հանելու համար դրա ինդեքսը տեղադրեք քառակուսի փակագծերում: Առաջին ցուցանիշ 0:

var fruit = [«Խնձոր», «Նարնջագույն», «Էշ»] զգուշացում (մրգեր) ահազանգ (մրգեր) ահազանգ (մրգեր)

Մենք կարող ենք նաև ստանալ JavaScript զանգվածի երկարություն.

var fruit = [«Խնձոր», «Նարնջագույն», «Էշ»] զգուշացում (մրգեր. երկարություն)

Վայ! Մենք ստեղծել ենք զանգված երկու պտուղով և էշով: Այժմ մենք պետք է հեռացնենք էշին:

Փոփ և հրում մեթոդներ

JavaScript- ի pop մեթոդը հեռացնում է տարրը զանգվածից և վերադարձնում այն:

Հետևյալ օրինակը ցույց է տալիս, թե ինչպես է Էշը հանվում զանգվածից.

var fruit = ["Apple", "Orange", "Donkey"] alert ("ջնջում եմ" + fruit.pop ()) // Այժմ մենք ունենք միայն ["Apple", "Orange"] alert ("Now զանգվածի չափը ՝ "+ մրգեր. երկարություն) // էշը հեռացված է

Նկատի ունեցեք, որ փոփը փոփոխում է զանգվածը:

Պոպի անալոգը push մեթոդն է, որը տարր է ավելացնում զանգվածին: Օրինակ, մենք մոռացել ենք դեղձ ավելացնել.

var fruit = ["Խնձոր", "Նարնջագույն"] fruit.push ("Դեղձ"); // այժմ մենք ունենք [«Խնձոր», «Նարնջագույն», «Դեղձ»] ահազանգ («Վերջին նյութը ՝« + մրգեր)

  1. Ստեղծեք ոճերի զանգված տարրերով » Ջազ”, “Բլյուզ”;
  2. Ավելացրեք արժեքը " Ռոք - ն - Ռոլլ«;
  3. Երկրորդ արժեքը վերջից փոխարինեք « Դասական". Դուք պետք է ավարտեք զանգվածով. " Ջազ”, ”Դասական”, ”Ռոք - ն - Ռոլլ»: Կոդը պետք է աշխատի զանգվածի ցանկացած երկարության համար.
  4. Valueանգվածից հանեք վերջին արժեքը և նախազգուշացրեք այն:

Լուծում

// 1 var styles = ["Jazz", "Bluez"] // 2 styles.push ("Rock" n "Roll") // or: styles = "Rock" n "Roll" // 3 styles = "Classic "// 4 զգուշացում (styles.pop ())

Shift / unshift մեթոդներ

Shift / unshift մեթոդները գործում են զանգվածի վերջում, բայց կարող եք նաև օգտագործել shift տարրերը վեր տեղափոխելու համար ( զանգվածի առաջին արժեքը հանվում է տարրերի տեղաշարժով): Unshift մեթոդը թույլ է տալիս JavaScript- ին զանգվածից տարր ավելացնել վերջից.

var fruit = ["Apple", "Orange"] var apple = fruit.shift () // այժմ մենք ունենք միայն ["Orange"] fruit.unshift ("Lemon") // այժմ ունենք ["Lemon", " Նարնջագույն »] զգոն (մրգեր. Երկարություն) // 2

Թե՛ հերթափոխը և թե՛ չփոխելը կարող են աշխատել միաժամանակ մի քանի տարրերի վրա.

var fruit = [«Խնձոր»] fruit.push («Նարնջագույն», «Դեղձ») fruit.unshift («Արքայախնձոր», «Կիտրոն») // այժմ զանգվածը այսպիսին է. [«Արքայախնձոր», «Կիտրոն», «Խնձոր», «Նարնջագույն», «Դեղձ»]

Ինքնուսուցման առաջադրանք

Writeգուշացման միջոցով arr զանգվածից պատահական արժեք ցուցադրելու համար գրեք ծածկագիր.

var arr = ["Սալոր", "Նարնջագույն", "Էշ", "Գազար", "JavaScript"]

Նշում. Պատահական թվից նվազագույնից մինչև առավելագույն արժեք (ներառյալ) ստանալու կոդը հետևյալն է.

var rand = min + Math.floor (Math.random () * (max + 1-min))

Լուծում

Մենք պետք է պատահական թիվ հանենք 0-ի և arr.length-1 (ներառյալ) միջև.

var arr = ["Սալոր", "Նարնջագույն", "Էշ", "Գազար", "JavaScript"] var rand = Math.floor (Math.random () * arr.length) ահազանգ (arr)

Կրկնվող զանգվածի վրա

JavaScript- ում զանգվածի կրկնությունը կատարվում է for loop- ի միջոցով.

var fruit = ["Արքայախնձոր", "Կիտրոն", "Խնձոր", "Նարինջ", "Դեղձ"] համար (var i = 0; i

Ինքնուսուցման առաջադրանք

Ստեղծեք find (arr, value) գործառույթը, որը գտնում է տվյալ զանգվածի արժեքը և վերադարձնում է իր ինդեքսը, կամ -1, եթե արժեք չի գտնվել:

Օրինակ:

arr = [«փորձարկում», 2, 1.5, կեղծ] գտնել (arr, «փորձություն») // 0 գտնել (arr, 2) // 1 գտնել (arr, 1.5) // 2 գտնել (arr, 0) // -1

Լուծում

Հնարավոր լուծումը կարող է այսպիսին լինել.

գործառույթ գտնել (զանգված, արժեք) (for (var i = 0; i

Բայց դա ճիշտ չէ, քանի որ ==- ն 0 -ի և կեղծի միջև տարբերություն չի դնում:

Ավելի ճիշտ է օգտագործել === JavaScript- ում զանգվածների հետ աշխատելիս: Բացի այդ, ES5- ի վերջին ստանդարտը պարունակում է Array # indexOf գործառույթը: Նրա օգնությամբ մենք կարող ենք ֆունկցիա սահմանել հետևյալ կերպ.

ֆունկցիա find (array, value) (if (array.indexOf) return array.indexOf (value) for (var i = 0; i

Նույնիսկ ավելի խելամիտ կլիներ գտնել գտնել պայմանի միջոցով `ստուգելու, թե արդյոք գոյություն ունի indexOf մեթոդը:

Ինքնուսուցման առաջադրանք

Ստեղծեք filterNumeric (arr) գործառույթ, որը վերցնում է զանգված և վերադարձնում նոր զանգված, որը պարունակում է միայն թվային արժեքները arr- ից:

Օրինակ, թե ինչպես դա պետք է աշխատի.

arr = ["a", 1, "b", 2]; arr = filterNumeric (arr); // այժմ arr =

Լուծում

Լուծումը զանգվածը շրջանցելն է և նոր զանգվածին արժեքներ ավելացնելը, եթե դրանք թվային են:

միանալ և պառակտվել

Երբեմն ձեզ հարկավոր է JavaScript զանգվածը տողի վերածելու արագ միջոց: Ահա թե ինչի համար է միացման մեթոդը:

Այն զանգվածը միացնում է տողի մեջ `օգտագործելով նշված սահմանաչափիչը.

var fruit = ["Կիտրոն", "Խնձոր", "Նարնջագույն", "Դեղձ"]; var str = fruit.join (","); ահազանգ (փող);

Հակառակ փոխակերպումը հեշտությամբ կատարվում է պառակտման մեթոդով.

var fruit = "Խնձոր, նարինջ, դեղձ"; var arr = fruit.split (","); // arr- ն այժմ պարունակում է [«Խնձոր», «Նարնջագույն», «Դեղձ»] ահազանգ (arr);

Ինքնուսուցման առաջադրանք

Օբյեկտը ներառում է className հատկություն, որը պարունակում է դասի անուններ ՝ բաժանված բացատներով.

Գրեք addClass գործառույթ (obj, cls), որը ավելացնում է cls դասը, բայց միայն այն դեպքում, եթե այն գոյություն չունի.

ddClass (obj, "new") // obj.className = "բաց նոր ընտրացանկ" addClass (obj, "open") // ոչ մի փոփոխություն (դաս արդեն գոյություն ունի) addClass (obj, "me") // obj.className = «Բաց ընտրացանկ նոր ինձ» ահազանգ (obj.className) //

Լուծում

Դուք պետք է className- ը և օղակը բաժանեք մասերի: Եթե ​​դասը չգտնվի, ապա այն ավելացվում է:

Օղակը փոքր -ինչ օպտիմիզացված է `կատարողականությունը բարձրացնելու համար.

գործառույթը addClass (elem, cls) (for (var c = elem.className.split (""), i = c.length-1; i> = 0; i--) (եթե (c [i] == cls ) վերադարձ) elem.className + = "" + cls) var obj = (className: "open menu") addClass (obj, "new") addClass (obj, "open") alert (obj.className) // բաց ընտրացանկ նոր

Վերոնշյալ օրինակում c փոփոխականը սահմանվում է օղակի սկզբում, և դրա վերջին ինդեքսը սահմանվում է i:

Օղակը ինքնին մշակվում է հակառակ ուղղությամբ ՝ ավարտվելով i> = 0 պայմանով: Քանի որ i> = 0 -ն ավելի արագ է ստուգվում, քան i- ն: Ինչը JavaScript- ում արագացնում է զանգվածում որոնումը:

Օգտագործելով երկարությունը `զանգվածը կտրելու համար

Օգտագործելով երկարության հատկությունը, կարող եք կտրել զանգվածը հետևյալ կերպ.

Դուք տալիս եք երկարությունը, և դիտարկիչը կրճատում է զանգվածը:

Rayանգվածը օբյեկտ է, ինչը նշանակում է

Իրականում, JavaScript- ում Array- ն օբյեկտ է ՝ ամբողջական երկարության ավտոմատ կարգավորմամբ և հատուկ մեթոդներով:

Սա տարբերվում է այլ լեզուների հասկացությունից, որտեղ զանգվածները ներկայացնում են հիշողության հարակից հատված: Սա նույնպես տարբերվում է հերթի կամ կույտի վրա հիմնված կապված ցուցակից:

-Անգվածի ոչ թվային բանալիներ

Բանալիները թվեր են, բայց դրանք կարող են ունենալ ցանկացած անուն.

arr = arr = 5 arr.prop = 10 // մի արա դա

JavaScript- ում զանգվածները հեշ -աղյուսակներ են `իրենց կատարման առավելություններով, բայց նաև թերություններով:

Օրինակ, push / pop- ն աշխատում է միայն զանգվածի ամենաերկար տարրերի վրա, այնպես որ դրանք անհավանական արագ են:

push- ը գործում է միայն վերջում.

var arr = ["My", "array"] arr.push ("something") alert (arr) // string "array"

Տեղափոխման / տեղաշարժի մեթոդները դանդաղ են, քանի որ դրանք պետք է վերահամարել ամբողջ զանգվածը: Միացման մեթոդը կարող է նաև փոխել համարակալումը.

Այսպիսով, shift / unshift- ն ավելի դանդաղ է, քան push / pop- ը: Որքան մեծ է զանգվածը, այնքան երկար է պահանջվում JavaScript- ը զանգվածը տեսակավորելու համար:

Ինքնուսուցման առաջադրանք

Ինչպիսի՞ն կլինի արդյունքը: Ինչո՞ւ:

arr = ["a", "b"] arr.push (գործառույթ () (ահազանգ (սա))) arr () //?

Լուծում

Քանի որ զանգվածները օբյեկտներ են, arr ..դա իրականում կոչ է obj- ի նման օբյեկտի մեթոդի մեթոդը:

arr () // նույնը, ինչ arr () // շարահյուսականորեն սխալ է, բայց հայեցակարգայինորեն նույնը `arr.2 () // վերագրանցված նույն ոճով, ինչ obj.method () սա = arr այս դեպքում փոխանցվում է գործառույթին, Այսպիսով, arr- ի բովանդակությունը դուրս է գալիս: arr = ["a", "b"] arr.push (գործառույթ () (զգուշացում (սա))) arr () // "a", "b", գործառույթ

Sparse Arrays, երկարության նկարագրություն

Երկարության հատկությունը թույլ է տալիս ստանալ ոչ թե զանգվածի չափը JavaScript- ում, այլ վերջին ինդեքսը +1: Սա կարեւոր է, երբ խոսքը վերաբերում է սակավաթիվ զանգվածներին, ինդեքսներում «բացեր»:

Հետևյալ օրինակում մենք դատարկ պտուղներին կավելացնենք երկու տարր, բայց երկարությունը մնում է 100:

var fruit = // դատարկ զանգվածի պտուղներ = "Դեղձի" պտուղներ = "Apple" ահազանգ (մրգեր. երկարություն) // 100 (բայց զանգվածում կա ընդամենը 2 տարր)

Եթե ​​փորձեք արտահոսել նոսր զանգված, դիտարկիչը բաց թողնված ցուցանիշները կցուցադրի որպես դատարկ տարրեր.

var fruit = // դատարկ զանգվածի պտուղներ = «Դեղձի» պտուղներ = «Խնձոր» ահազանգ (մրգեր) //, Դեղձ, Խնձոր (կամ նման մի բան)

Բայց զանգվածը երկու բանալիներով օբյեկտ է: Բացակայող արժեքները տեղ չեն զբաղեցնում:

Նոսր զանգվածներն իրենց տարօրինակ են պահում, երբ դրանց վրա կիրառվում են զանգվածային մեթոդներ: Նրանք գաղափար չունեն, որ ինդեքսները բացակայում են.

var fruit = մրգեր = "Դեղձ" մրգեր = "Apple" ահազանգ (fruit.pop ()) // մղել "Apple" (ինդեքսում 9) ահազանգ (fruit.pop ()) // դուրս մղել չստացված տարրը (ինդեքսում 8)

Փորձեք խուսափել նոսր զանգվածներից: Ամեն դեպքում, նրանց մեթոդները լավ չեն աշխատի: Փոխարենը օգտագործեք օբյեկտ:

Հեռացվում է զանգվածից

Ինչպես գիտենք, զանգվածները օբյեկտներ են, ուստի մենք կարող ենք օգտագործել delete ՝ արժեքը ջնջելու համար.

var arr = ["Գնալ", "դեպի", "տուն"] ջնջել arr // այժմ arr = ["Գնալ", չսահմանված, "տուն"] ահազանգ (arr) // սահմանված չէ

Դուք կարող եք տեսնել, որ արժեքը հեռացվում է, բայց ոչ այնպես, ինչպես մենք կցանկանայինք, քանի որ զանգվածը պարունակում է չճշտված տարր:

Deleteնջման օպերատորը ջնջում է բանալի-արժեք զույգ, և վերջ: Բնականաբար, քանի որ զանգվածը միայն հաշ է, հեռացված տարրի դիրքը դառնում է չսահմանված:

Ավելի հաճախ, քան ոչ, մենք պետք է ջնջենք տարր ՝ առանց ինդեքսների միջև «անցքեր» թողնելու: Կա մեկ այլ մեթոդ, որը կօգնի մեզ դրանում:

Splice մեթոդը

Splice մեթոդը կարող է հեռացնել և փոխարինել JavaScript- ի բազմաչափ զանգվածների տարրերը: Դրա շարահյուսությունն է.

arr.splice (ինդեքս, deleteCount [, elem1, ..., elemN])

Indexնջում է deleteCount տարրը ՝ սկսած ինդեքսից, այնուհետև իր տեղում տեղադրում է elem1,…, elemN:

Եկեք մի քանի օրինակ նայենք.

var arr = ["Գնալ", "դեպի", "տուն"] arr.splice (1, 1) // հեռացնել 1 տարր ՝ սկսած ինդեքս 1 ահազանգից (arr.join (",")) // ["Go" , "տուն"] (1 տարր հանված է)

Այս կերպ Դուք կարող եք օգտագործել splice ՝ զանգվածից մեկ տարր հեռացնելու համար: Arանգվածի տարրերի թվերը տեղաշարժվում են բացը լրացնելու համար.

var arr = ["Գնալ", "դեպի", "տուն"] arr.splice (0, 1) // հեռացնել 1 տարր ՝ սկսած ինդեքսի 0 ահազանգից (arr) // "դեպի" դարձավ առաջին տարրը

Հետևյալ օրինակը ցույց է տալիս, թե ինչպես փոխարինել տարրերը.

Splice մեթոդը վերադարձնում է հեռացված տարրերի զանգվածը.

var arr = [«Գնա», «դեպի», «տուն», «այժմ»]; // հեռացնել առաջին 2 տարրերը var հեռացված = arr.splice (0, 2) զգուշացում (հեռացված) // "Գնալ", "դեպի"<-- массив удаленных элементов splice может вставлять элементы, задайте 0 для deleteCount. var arr = ["Go", "to", "home"]; // со второй позиции // удаляем 0 // и вставляем "my", "sweet" arr.splice(2, 0, "my", "sweet") alert(arr) // "Go", "to", "my", "sweet", "home"

Այս մեթոդը կարող է նաև օգտագործել բացասական ինդեքս, որը հաշվարկվում է զանգվածի վերջից.

var arr = // -1 տարրի համար (նախավերջին) // հեռացնել 0 տարրեր, // և տեղադրել 3 և 4 arr. կտոր (-1, 0, 3, 4) ահազանգ (arr) // 1,2,3, 4.5

Ինքնուսուցման առաջադրանք

Օբյեկտը պարունակում է className հատկություն, որը պարունակում է դասի անուններ ՝ բաժանված բացատներով.

var obj = (className: "բաց մենյուն")

Գրեք removeClass գործառույթ (obj, cls), որը հեռացնում է cls դասը, եթե տրված է.

removeClass (obj, "open") // obj.className = "menu" removeClass (obj, "blabla") // փոփոխություններ չկան (հեռացնելու դաս չկա)

Լուծում

Դուք պետք է className- ը բաժանեք մասերի և շրջեք այս մասերով: Եթե ​​համընկնում է հայտնաբերվում, այն հանվում է JavaScript օբյեկտների զանգվածից, այնուհետև կցվում է մինչև վերջ:

Եկեք մի փոքր օպտիմալացնենք սա.

գործառույթը removeClass (elem, cls) (for (var c = elem.className.split (""), i = c.length-1; i> = 0; i--) (եթե (c [i] == cls ) c.splice (i, 1)) elem.className = c.join ("")) var obj = (className: "open menu") removeClass (obj, "open") removeClass (obj, "blabla") alert (obj.className) // ընտրացանկ

Վերոնշյալ օրինակում c- ը դրված է օղակի սկզբում, իսկ i- ը `վերջին ցուցանիշի վրա:

Օղակը ինքնին ընթանում է հակառակ ուղղությամբ ՝ ավարտվելով i> = 0 պայմանով: Դա պայմանավորված է նրանով, որ i> = 0 -ն ավելի արագ է փորձարկվում, քան i- ն: Ինչն արագացնում է գ.

Կտրման մեթոդ

Դուք կարող եք արդյունահանել զանգվածի մի մասը ՝ օգտագործելով շերտ (սկիզբ [, վերջ]) մեթոդով: var arr = ["Ինչու", "սովորել", "JavaScript"]; var arr2 = arr.slice (0,2) // վերցնում է 2 տարր ՝ սկսած 0 ահազանգից (arr2.join (",")) // "Ինչու, սովորիր"

Նկատի ունեցեք, որ այս մեթոդը չի փոխում զանգվածի տարրերի քանակը JavaScript- ում, այլ պատճենում է դրա մի մասը:

Դուք կարող եք բաց թողնել երկրորդ փաստարկը ՝ բոլոր ինդեքսներից սկսած բոլոր տարրերը ստանալու համար.

var arr = ["Ինչու", "սովորել", "JavaScript"]; var arr2 = arr.slice (1) // ընդունում է բոլոր տարրերը ՝ սկսած 1 ահազանգից (arr2.join (",")) // "սովորել, JavaScript"

Մեթոդը աջակցում է բացասական ինդեքսներին, ինչպես String # շերտը:

Հակադարձ մեթոդ

Մեկ այլ օգտակար մեթոդ հակառակն է: Ենթադրենք, ես ուզում եմ տիրույթի վերջին մասը ստանալ, օրինակ ՝ « com"-Ից" my.site.com»: Ահա թե ինչպես կարող եք դա անել.

var տիրույթ = "my.site.com" var last = domain.split ("."). հակադարձ () ահազանգ (վերջին)

Նկատի ունեցեք, որ JavaScript- ի զանգվածները աջակցում են բարդ շարահյուսություն (հակադարձ ()) `մեթոդին կանչելու և ստացված զանգվածից տարր առբերելու համար:

Դուք կարող եք ավելի երկար զանգեր կատարել, ինչպես հակադարձ () 0] arr.sort () alert (arr) // 1, 15, 2

Գործարկեք վերը նշված կոդը: Պատվերը կստանաք 1, 15, 2: Դա պայմանավորված է նրանով, որ մեթոդը ամեն ինչ վերածում է տողի և օգտագործում է լեքսիկոգրաֆիական լռելյայն կարգը:

Նախորդ հոդվածում մենք խոսեցինք այն մասին, թե ինչ է դա և ինչպես աշխատել դրա հետ: Այս հոդվածում մենք կխոսենք դրա մասին բազմաչափ զանգված.

Այն զանգված է, որն ունի մեկ կամ մի քանի տարրեր, որոնք նույնպես զանգված են: Կախված գովազդի խորությունից, մասնավորապես, այն կարող է կոչվել երկչափ զանգված(2 մակարդակ) կամ եռաչափ զանգված(3 մակարդակ) կամ քառաչափ(4 մակարդակ) և այլն:

Ամենահայտնին ՝ միակողմանի զանգվածից հետո, ամենից հաճախ օգտագործվում է երկչափ զանգվածը: Մենք այն ավելի մանրամասն կուսումնասիրենք:


Ինչպես տեսնում եք, երկչափ զանգվածի տարրերը միաչափ զանգվածներ են: Եթե ​​այս միաչափ զանգվածները պարունակեին ավելի շատ զանգվածներ, ապա arr զանգվածն արդեն եռաչափ կլիներ:

Օրինակ, եկեք ստեղծենք երեք պարզ զանգված և դրանք լրացնենք տվյալներով: Առաջինը մենք կլրացնենք զույգ թվերով, երկրորդը ՝ կենտ թվերով, իսկ երրորդը ՝ որոշ կամայական տվյալներով:

// Հայտարարել երեք դատարկ զանգված var evenNumbers = new Array (); // փոփոխական k - զանգվածային ինդեքսների համար evenNumbers var k = 0; var oddNumbers = նոր զանգված (); // փոփոխական n - զանգվածային ինդեքսների համար oddNumbers var n = 0; var data = new Array («մեքենա», «ինքնաթիռ», ճշմարիտ, 89, «մ»); // Լրացրեք զանգվածը evenNumbers, զույգ թվերով (var i = 1; i

Տեսնելու համար, թե ինչ կա զանգվածի ներսում, կարող եք օգտագործել այնպիսի գործիք, ինչպիսին է մխիթարել.

Օրինակ, մենք ցանկանում ենք տեսնել կենտ թվերով կենտ թվերով կենտ թվեր: Դա անելու համար ստորև նշված ծածկագրում գրեք հետևյալ տողը.

Console.log (կենտ համարներ);

Արդյունքը տեսնելու համար հարկավոր է բացել մխիթարել դիտարկիչում... Google Chrome- ում դա արվում է այսպես. Աջ սեղմեք էջի վրա և համատեքստի ընտրացանկից ընտրեք «Դիտել կոդը» վերջին տարբերակը, այսինքն ՝ տեսուչը: Անգլերեն տարբերակում այս տարբերակը կոչվում է Inspect:


Եվ ներքևում կհայտնվի մշակողի գործիքագոտին: Դրա մեջ դուք պետք է գնաք Վահանակի ներդիր:


Այժմ, որպեսզի ստեղծել երկչափ զանգված, դուք պետք է հայտարարեք այն և դրան ավելացնեք վերևում ստեղծված մեկ ծավալային զանգվածները:

// Հայտարարեք երկչափ զանգված երկուDimens և լրացրեք այն var twoDimens = նոր զանգված (զույգ թվեր, կենտ թվեր, տվյալներ); console.log (twoDimens);

Եկեք տեսնենք այս զանգվածի բովանդակությունը վահանակում:


կրկնվում է երկչափ զանգվածի վրայով

Նախ, եկեք սովորենք ինչպես մուտք գործել երկչափ զանգվածի տարրեր.

Ինչպես առանձին զանգվածների դեպքում, այնպես էլ տարրերը հասանելի են իրենց ինդեքսներով:

Օրինակ, եկեք ցուցադրենք տարրը ինդեքսում 3 կենտ թվերով զանգվածից (կենտ թվեր): TwoDimens երկչափ զանգվածի միաչափ զանգվածի ինդեքսը մեկն է (1):

Document.write ("Տարօրինակ թվերով տարրը կենտ թվերի կենտ թվերի քանակն է." + TwoDimens); // Տարր ՝ 7

TwoDimens զանգվածում մենք վերաբերում ենք ինդեքս 1 -ի տարրին: Այս ինդեքսի տարրը տարօրինակ թվերի զանգվածն է: Եվ այս զանգվածում մենք արդեն մուտք ենք գործում 3 ինդեքս ունեցող տարր, որը 7 թիվն է:

Հիմա անցնենք բուն հարցին ինչպես կրկնել երկչափ զանգվածի վրա.

Երկկողմանի զանգվածի օղակը կատարվում է երկակի հանգույցի միջոցով: Օրինակ, եկեք կրկնվենք մեր twoDimens զանգվածի վրա:

Համար (var i = 0; i< twoDimens.length; i++){ for(var j = 0; j < twoDimens[i].length; j++){ document.write("

Eուցանիշով տարր " + i +" " + j +"հավասար է ՝ " + երկուՉափ [i] [j] +"

"); } }

Առաջին օղակում մենք կրկնում ենք բուն TwoDimens զանգվածի վրայով: Երկրորդ հանգույցում մենք արդեն կրկնում ենք հենց տարրի (զանգվածի) վրա: Նախ, i փոփոխականը հավասար է 0. Հետևաբար, երկրորդ հանգույցում մենք առաջին անգամ կրկնում ենք evenNumbers առաջին զանգվածի վրա, որն ունի 0. ինդեքս: Եվ արդեն երկրորդ հանգույցի ներսում մենք մուտք ենք գործում այս զանգվածի տարրեր: Այսպիսով ՝ twoDimens [j]: Որտեղ j տատանվում է 0 -ից մինչև զույգ թվերի զանգվածի երկարություն:

Առաջին զանգվածի տարրերի վրա կրկնելուց հետո մենք վերադառնում ենք առաջին օղակին, ավելացնում ենք i փոփոխականը և անցնում երկրորդ զանգվածի oddNumbers- ին, որն ունի ինդեքս 1. Եվ այսպես, մենք կրկնում ենք երկչափ զանգվածի յուրաքանչյուր տարրի վրա: երկչափ.

Հիմա եկեք նայենք այս որոնման արդյունքին.


Դա այն ամենն է, ինչի մասին ես ուզում էի խոսել այս հոդվածում: Այժմ դուք գիտեք, թե ինչպես ստեղծել երկչափ զանգված, ինչպես մուտք գործել երկչափ զանգվածի տարրեր և ինչպես կրկնել երկչափ զանգվածի վրա: Հուսով եմ, որ ամեն ինչ պարզ էր: Մաղթում եմ ձեզ մեծ հաջողություն:

Raանգվածներ

Զանգվածարժեքների պատվիրված հավաքածու է: Arանգվածի արժեքները կոչվում են տարրեր, և յուրաքանչյուր տարր բնութագրվում է զանգվածում թվային դիրքով, որը կոչվում է ինդեքս: Sանգվածները JavaScript- ում անտիպ են. Զանգվածի տարրերը կարող են լինել ցանկացած տիպի, իսկ նույն զանգվածի տարբեր տարրերը կարող են լինել տարբեր տեսակի: Arանգվածի տարրերը կարող են լինել նույնիսկ օբյեկտներ կամ այլ զանգվածներ, ինչը թույլ է տալիս ստեղծել տվյալների բարդ կառուցվածքներ, ինչպիսիք են օբյեկտների զանգվածները և զանգվածների զանգվածները:

Sանգվածի ինդեքսները JavaScript- ում զրոյական են և օգտագործում են 32-բիթ ամբողջ թվեր. Զանգվածի առաջին տարրն ունի ինդեքս 0. JavaScript զանգվածները դինամիկ են. Դրանք կարող են աճել և փոքրանալ ըստ անհրաժեշտության. կարիք չկա հայտարարելու զանգվածների ֆիքսված չափերը, երբ դրանք ստեղծվում են, կամ հիշողությունը վերաբաշխելու դեպքում, երբ դրանք չափափոխվում են:

Sանգվածները JavaScript- ում օբյեկտների մասնագիտացված ձև են, և զանգվածների ինդեքսները մի փոքր ավելին են նշանակում, քան պարզապես գույքի անուններ, որոնք պատահաբար ամբողջ թվեր են:

.Անգվածների ստեղծում

Anանգված ստեղծելու ամենահեշտ ձևը բառացի է, որը քառակուսի փակագծերում զանգվածային տարրերի պարզ ստորակետով ցուցակ է: Liteանգվածային բառացի արժեքները պարտադիր չէ, որ լինեն հաստատուն. Դրանք կարող են լինել ցանկացած արտահայտություններ, ներառյալ առարկայական բառացի բառերը.

Var դատարկ =; // Դատարկ զանգված var համարներ =; // rayանգված հինգ թվային տարրերով var misc = [1.1, true, "a",]; // Տարբեր տեսակների 3 տարրեր + հետևի ստորակետով var base = 1024; var աղյուսակ =; // var arrObj = [,] փոփոխականներով փոփոխականներով; // առարկաներ պարունակող 2 զանգված

Arանգվածի բառացի շարահյուսությունը թույլ է տալիս տեղադրել կամընտիր հետապնդող ստորակետ, այսինքն. literal [,] համապատասխանում է զանգվածին երկու տարրով, այլ ոչ թե երեքով:

Anանգված ստեղծելու մեկ այլ եղանակ է զանգահարել կոնստրուկտորին Զանգված ()... Կոնստրուկտորը կարելի է անվանել երեք տարբեր եղանակներով.

    Callանգահարեք կոնստրուկտորին ՝ առանց փաստարկների.

    Var arr = նոր զանգված ();

    Այս դեպքում կստեղծվի բառացիին համարժեք դատարկ զանգված:

    Callանգահարեք կոնստրուկտորին մեկ թվային փաստարկով `նշելով զանգվածի երկարությունը.

    Var arr = նոր զանգված (10);

    Այս դեպքում կստեղծվի նշված երկարության դատարկ զանգված: Array () կոնստրուկտոր կանչելու այս ձևը կարող է օգտագործվել զանգվածի համար հիշողություն նախապես հատկացնելու համար, եթե դրա տարրերի թիվը նախապես հայտնի է: Նկատի ունեցեք, որ սա զանգվածներ չի պահում որևէ արժեք:

    Կոնստրուկտորի կանչում հստակորեն նշեք զանգվածի առաջին երկու կամ ավելի տարրերի կամ մեկ ոչ թվային տարրի արժեքները.

    Var arr = նոր զանգված (5, 4, 3, 2, 1, «փորձարկում»);

    Այս դեպքում կոնստրուկտորի փաստարկները դառնում են նոր զանգվածի տարրերի արժեքներ: Arանգվածային տառատեսակների օգտագործումը գրեթե միշտ ավելի հեշտ է, քան Array () կոնստրուկտորը այս կերպ օգտագործելը:

Arանգվածի տարրեր կարդալ և գրել

Arանգվածի տարրերը հասանելի են օպերատորի միջոցով: Փակագծերի ձախ մասում պետք է լինի զանգվածային հղում: Կամայական արտահայտությունը, որը վերադարձնում է ոչ բացասական ամբողջ արժեք, պետք է լինի փակագծերում: Այս շարահյուսությունը հարմար է զանգվածի տարրի արժեքը կարդալուն և գրելուն: Հետևաբար, JavaScript- ի հետևյալ բոլոր հայտարարությունները վավեր են.

// Ստեղծել զանգված մեկ տարրով var arr = ["աշխարհ"]; // Կարդալ տարրը 0 var value = arr; // Գրել արժեքը 1 տարրի arr = 3.14; // Գրեք 2 տարրի արժեքը i = 2; arr [i] = 3; // Գրել արժեք 3 տարրի arr = "բարև"; // Կարդացեք 0 -րդ և 2 -րդ կետերը, արժեքը գրեք 3 -րդ կետին arr] = arr;

Հիշեցնեմ, որ զանգվածները մասնագիտացված օբյեկտ են: Arանգվածի տարրերին մուտք գործելու համար օգտագործվող քառակուսային փակագծերը գործում են ճիշտ այնպես, ինչպես քառակուսի փակագծերը, որոնք օգտագործվում են օբյեկտի հատկություններին մուտք գործելու համար: JavaScript- ի թարգմանիչը փակագծերում թվային ինդեքսները վերածում է տողերի. Ցուցիչը 1 դառնում է «1» տող, այնուհետև տողերը օգտագործում է որպես հատկությունների անուններ:

Թվային ինդեքսները տողերի վերածելու մեջ ոչ մի հատուկ բան չկա. Նույնը կարելի է անել սովորական օբյեկտների հետ.

Var obj = (); // Ստեղծեք պարզ օբյեկտ obj = "one"; // Ինդեքսավորեք այն ամբողջ թվերով

Arանգվածների առանձնահատկությունն այն է, որ գույքի անուններ օգտագործելիս, որոնք ոչ բացասական ամբողջ թվեր են, զանգվածները ինքնաբերաբար որոշում են հատկության արժեքը երկարությունը... Օրինակ, arr զանգվածը ստեղծվել է վերևում ՝ մեկ տարրով: Այնուհետև, դրա տարրերին 1, 2 և 3 ցուցանիշներ են վերագրվում արժեքներին:

Դուք պետք է հստակ տարբերեք զանգվածի ինդեքսները և օբյեկտի հատկությունների անունները: Բոլոր ինդեքսները սեփականության անուններ են, բայց միայն ամբողջ անուններով հատկությունները ինդեքսներ են: Բոլոր զանգվածները օբյեկտներ են, և դրանց կարող եք հատկություններ ավելացնել ցանկացած անունով: Այնուամենայնիվ, եթե դուք դիպչում եք զանգվածների ինդեքս հանդիսացող հատկություններին, զանգվածները արձագանքում են ՝ ըստ անհրաժեշտության թարմացնելով երկարության հատկության արժեքը:

Նկատի ունեցեք, որ բացասական և ոչ ամբողջ թվերը թույլատրվում են որպես զանգվածների ինդեքսներ: Այս դեպքում թվերը վերածվում են տողերի, որոնք օգտագործվում են որպես հատկությունների անուններ:

Arանգվածի տարրերի ավելացում և հեռացում

Մենք արդեն տեսել ենք, որ զանգվածին տարրեր ավելացնելու ամենահեշտ ձևը նոր ինդեքսներին արժեքներ վերագրելն է: Կարող եք նաև օգտագործել մեթոդը `զանգվածի վերջում մեկ կամ մի քանի տարր ավելացնելու համար հրում ():

Var arr =; // Ստեղծեք դատարկ զանգված arr.push («զրո»); // Ավելացրեք արժեք վերջնական arr.push («մեկ», 2); // Ավելացնել ևս երկու արժեք

Դուք նաև կարող եք տարր ավելացնել զանգվածի վերջում ՝ նշանակելով arr տարրին արժեք: Anանգվածի սկզբում տարր տեղադրելու համար կարող եք օգտագործել մեթոդը չփոխել ()իսկ զանգվածի առկա տարրերը տեղափոխվում են ավելի բարձր ցուցանիշներ:

Դուք կարող եք ջնջել զանգվածի տարրեր ՝ օգտագործելով ջնջման օպերատորը, ինչպես օբյեկտների սովորական հատկությունները.

Var arr =; ջնջել arr; 2 arr; // կեղծ, զանգվածի ինդեքս 2 -ը անորոշ է arr.length; // 3: ջնջման օպերատորը չի փոխում զանգվածի երկարության հատկությունը

Տարրը հեռացնելը նման է (բայց մի փոքր այլ) այդ տարրին չսահմանված արժեք տալուն: Նկատի ունեցեք, որ ջնջման օպերատորի կիրառումը զանգվածի տարրի վրա չի փոխում երկարության հատկության արժեքը, ինչպես նաև չի շարժվում ներքև ՝ ավելի բարձր ինդեքսավորված տարրերով ՝ տարրը ջնջելուց հետո մնացած դատարկությունը լրացնելու համար:

Բացի այդ, զանգվածի վերջում հնարավոր է տարրեր հեռացնել ՝ պարզապես երկարության հատկությանը նոր արժեք տալով: Arանգվածներն ունեն մեթոդ փոփ ()(push- ի հակառակ) (), որը նվազեցնում է զանգվածի երկարությունը 1 -ով և վերադարձնում հեռացված տարրի արժեքը: Կա նաև մեթոդ հերթափոխ ()(unshift- ի հակառակը ()), որը հեռացնում է տարրը զանգվածի սկզբում: Ի տարբերություն ջնջման օպերատորի, shift () մեթոդը բոլոր տարրերը մեկ դիրքով իջեցնում է նրանց ընթացիկ ցուցանիշներից ցածր:

Ի վերջո, կա բազմաֆունկցիոնալ մեթոդ զուգավորում (), որը թույլ է տալիս տեղադրել, ջնջել և փոխարինել զանգվածների տարրեր: Այն փոխում է երկարության հատկության արժեքը և ըստ անհրաժեշտության տեղաշարժում զանգվածի տարրերը ավելի ցածր կամ ավելի բարձր ինդեքսներով: Այս բոլոր մեթոդները մենք կքննարկենք մի փոքր ուշ:

Բազմաչափ զանգվածներ

JavaScript- ը չի աջակցում «իրական» բազմաչափ զանգվածներին, բայց լավ է կատարում նրանց նմանակումը `օգտագործելով զանգվածներից զանգվածները: Arանգվածների զանգվածում տվյալների տարր մուտք գործելու համար բավական է երկու անգամ օգտագործել օպերատորը:

Օրինակ, ենթադրենք, որ փոփոխական մատրիցան թվերի զանգվածների զանգված է: [X] մատրիցայի յուրաքանչյուր տարր թվերի զանգված է: Դուք կարող եք օգտագործել մատրիցա [x] [y] արտահայտությունը զանգվածի որոշակի թվին մուտք գործելու համար: Ստորև բերված է կոնկրետ օրինակ, որտեղ երկչափ զանգվածը օգտագործվում է որպես բազմապատկման աղյուսակ.

// Ստեղծել բազմաչափ զանգված var սեղան = նոր զանգված (10); // Աղյուսակում կա 10 տող (var i = 0; i

Rayանգվածի դասի մեթոդներ

ECMAScript 3 ստանդարտը սահմանում է Array.prototype- ի կազմում զանգվածների հետ աշխատելու շատ հարմար գործառույթներ, որոնք հասանելի են որպես ցանկացած զանգվածի մեթոդներ: Այս մեթոդները կներկայացվեն հետևյալ ենթաբաժիններում:

Join () մեթոդը

Array.join () մեթոդը զանգվածի բոլոր տարրերը փոխակերպում է տողերի, դրանք միացնում և վերադարձնում ստացված տողը: Ընտրովի փաստարկը կարող է փոխանցվել մեթոդին տողով, որը կօգտագործվի արդյունքի տողի տարրերը առանձնացնելու համար: Եթե ​​սահմանազատող տող նշված չէ, օգտագործվում է ստորակետ: Օրինակ, հետևյալ հատվածը հանգեցնում է «1,2,3» տողի:

Var arr =; arr. միանալ (); // "1,2,3" arr.join ("-"); // «1-2-3»

Հակառակ () մեթոդը

Array.reverse () մեթոդը հակադարձում է զանգվածի տարրերի կարգը և վերադարձնում վերադասավորված զանգված: Փոխանակումը կատարվում է անմիջապես սկզբնական զանգվածի վրա, այսինքն. այս մեթոդը չի ստեղծում նոր զանգված `վերադասավորված տարրերով, այլ դրանք վերադասավորում է արդեն գոյություն ունեցող զանգվածում: Օրինակ, հետևյալ հատվածը, որն օգտագործում է reverse () և join () մեթոդները, հանգեցնում է «3,2,1» տողի:

Var arr =; arr.reverse (). միանալ (); // "3,2,1"

Տեսակավորել () մեթոդը

Array.sort () մեթոդը դասավորում է սկզբնական զանգվածի տարրերը և վերադարձնում դասավորված զանգվածը: Եթե ​​տեսակավորման () մեթոդը կանչվում է առանց արգումենտների, դասավորությունը կատարվում է այբբենական կարգով (համեմատության համար, անհրաժեշտության դեպքում տարրերը ժամանակավորապես փոխակերպվում են տողերի): Չսահմանված տարրերը փաթաթված են զանգվածի վերջում:

Դուք կարող եք համեմատության գործառույթ փոխանցել որպես փաստարկ ՝ տեսակավորելու () տեսակավորելու համար ՝ ցանկացած այլ ոչ այբբենական կարգով: Այս գործառույթը սահմանում է, թե իր երկու փաստարկներից որն է դասավորված ցանկում առաջինը: Եթե ​​առաջին փաստարկը պետք է նախորդի երկրորդին, ապա համեմատության գործառույթը պետք է վերադարձնի բացասական թիվ: Եթե ​​առաջին փաստարկը պետք է հաջորդի երկրորդը դասավորված զանգվածում, ապա գործառույթը պետք է վերադարձնի զրոից մեծ թիվ: Եվ եթե երկու արժեքները համարժեք են (այսինքն ՝ դրանց կարգը կարևոր չէ), համեմատության գործառույթը պետք է վերադարձնի 0:

Var arr =; arr.sort (); // Այբբենական կարգ. կարգը a և b)); // Տեսակավորել հետընթաց, ամենաբարձրից մինչև ամենացածրը: դասակարգում (գործառույթ (ա, բ) (վերադարձ բ-ա));

Ուշադրություն դարձրեք, թե որքան հարմար է այս հատվածում օգտագործել անանուն գործառույթ: Համեմատության գործառույթը օգտագործվում է միայն այստեղ, այնպես որ կարիք չկա դրան տալ անուն:

Կոնկատի () մեթոդը

Array.concat () մեթոդը ստեղծում և վերադարձնում է նոր զանգված, որը պարունակում է սկզբնական զանգվածի տարրերը, որոնց վրա կոչվել է concat () մեթոդը և ցանկացած արգումենտի արժեքներ, որոնք փոխանցվել են concat () մեթոդին: Եթե ​​այս փաստարկներից որևէ մեկն ինքնին զանգված է, ապա դրա տարրերը ավելացվում են վերադարձված զանգվածին: Այնուամենայնիվ, պետք է նշել, որ չկա զանգվածի ռեկուրսիվ փոխակերպում զանգվածներից զանգվածների մեկ ծավալային զանգվածի: Concat () մեթոդը չի փոփոխում սկզբնական զանգվածը: Ստորև բերված են մի քանի օրինակներ.

Var arr =; arr.concat (4, 5); // Վերադարձնում է arr.concat (); // Վերադարձնում է arr.concat (,) // Վերադառնում է arr.concat (4,]) // Վերադառնում]

Slice () մեթոդը

Array.slice () մեթոդը վերադարձնում է նշված զանգվածի շերտը կամ ենթադասը: Մեթոդի երկու փաստարկները սահմանում են վերադարձված կտորի սկիզբը և վերջը: Վերադարձված զանգվածը պարունակում է առաջին արգումենտում համարակալված տարրը գումարած բոլոր հաջորդ տարրերը ՝ մինչև (բայց չներառելով) երկրորդ արգումենտում համարակալված տարրը:

Եթե ​​նշված է միայն մեկ արգումենտ, վերադարձված զանգվածը պարունակում է բոլոր տարրերը սկզբնական դիրքից մինչև զանգվածի վերջ: Եթե ​​արգումենտներից որևէ մեկը բացասական է, այն սահմանում է տարրի համարը զանգվածի վերջի համեմատ: Այսպիսով, փաստարկ -1 -ը համապատասխանում է զանգվածի վերջին տարրին, իսկ -3 փաստարկը `վերջից զանգվածի երրորդ տարրին: Ահա մի քանի օրինակ.

Var arr =; arr.slic (0.3); // Վերադարձնում է arr.slice (3); // Վերադարձնում է arr.slice (1, -1); // Վերադարձնում է arr.slice (-3, -2); // Կվերադառնա

Splice () մեթոդը

Array.splice () մեթոդը ընդհանուր մեթոդ է, որը տեղադրում կամ հեռացնում է տարրերը զանգվածից: Ի տարբերություն slice () և concat () մեթոդների, splice () մեթոդը փոփոխում է սկզբնական զանգվածը, որի վրա այն կոչվում էր: Նշենք, որ splice () և slice () մեթոդները շատ նման անուններ ունեն, բայց կատարում են բոլորովին այլ գործողություններ:

Splice () մեթոդը կարող է հեռացնել տարրերը զանգվածից, տեղադրել նոր տարրեր կամ կատարել երկուսն էլ միաժամանակ: Theանգվածի տարրերը տեղաշարժվում են ըստ անհրաժեշտության, որպեսզի տեղադրումից կամ ջնջումից հետո ձևավորվի հարակից հաջորդականություն:

Splice () մեթոդի առաջին արգումենտը սահմանում է զանգվածի դիրքը, որից պետք է տեղադրվի և / կամ ջնջվի: Երկրորդ արգումենտը սահմանում է զանգվածից հանվող (կտրված) տարրերի քանակը: Եթե ​​երկրորդ արգումենտը բաց թողնված է, ապա զանգվածի բոլոր տարրերը նշված զանգվածից մինչև զանգվածի վերջը հանվում են: Splice () մեթոդը վերադարձնում է հեռացված տարրերի զանգվածը, կամ (եթե տարրերից ոչ մեկը չի հեռացվել) դատարկ զանգված:

Splice () մեթոդի առաջին երկու արգումենտները նշում են զանգվածի տարրերը, որոնք պետք է հեռացվեն: Այս փաստարկներին կարող են հաջորդել ցանկացած այլ լրացուցիչ փաստարկներ, որոնք սահմանում են զանգվածի մեջ մտնելու տարրերը `սկսած առաջին արգումենտում նշված դիրքից:

Var arr =; arr.splice (4); // Վերադարձնում է arr = arr.splice (1,2); // Վերադարձնում է arr = arr.splice (1,1); // Կվերադառնա; arr = arr =; arr.splice (2,0, «ա», «բ»); // Կվերադառնա; arr =

Push () և pop () մեթոդները

Push () և pop () մեթոդները թույլ են տալիս աշխատել զանգվածների հետ, ինչպիսիք են կույտերը: Push () մեթոդը զանգվածի վերջում ավելացնում է մեկ կամ մի քանի նոր տարր և վերադարձնում դրա նոր երկարությունը: Pop () մեթոդը կատարում է հակառակ գործողությունը. Այն հեռացնում է զանգվածի վերջին տարրը, նվազեցնում զանգվածի երկարությունը և վերադարձնում հեռացված արժեքը: Նկատի ունեցեք, որ այս երկու մեթոդներն էլ փոխում են սկզբնական զանգվածը, այլ ոչ թե ստեղծում դրա փոփոխված պատճենը:

Unshift () և shift () մեթոդներ

Unshift () և shift () մեթոդները նույն կերպ են վարվում, ինչ push () և pop () տարբերակները, բացառությամբ, որ դրանք տեղադրում և հեռացնում են տարրերը զանգվածի սկզբում, այլ ոչ թե վերջում: Unshift () մեթոդը գոյություն ունեցող տարրերը տեղափոխում է ավելի մեծ ինդեքսներ `տեղ ազատելու համար, տարրը կամ տարրերը ավելացնում է զանգվածի սկզբում և վերադարձնում զանգվածի նոր երկարությունը: Shift () մեթոդը հեռացնում և վերադարձնում է զանգվածի առաջին տարրը ՝ բոլոր հաջորդ տարրերը տեղափոխելով մեկ դիրքով ներքև ՝ զբաղեցնելով զանգվածի սկզբում ազատված տարածքը:

Վերջին թարմացումը `09.04.2018

Raանգվածները նախատեսված են տվյալների հավաքածուների հետ աշխատելու համար: Նոր զանգված () արտահայտությունը օգտագործվում է զանգված ստեղծելու համար.

Var myArray = նոր զանգված ();

Կա նաև զանգված ստեղծելու ավելի կարճ եղանակ.

Var myArray =;

Այս դեպքում մենք ստեղծում ենք դատարկ զանգված: Բայց դուք կարող եք դրան ավելացնել նաև նախնական տվյալներ.

Var մարդիկ = [«Թոմ», «Ալիս», «Սեմ»]; console.log (մարդիկ);

Այս դեպքում myArray- ում երեք տարր կլինի: Գրաֆիկորեն այն կարող է ներկայացվել հետևյալ կերպ.

Ինդեքսներն օգտագործվում են զանգվածի առանձին տարրերին վերաբերելու համար: Հաշվարկը սկսվում է զրոյից, այսինքն ՝ առաջին տարրը կունենա 0 ինդեքս, իսկ վերջինը ՝ 2:

Var մարդիկ = [«Թոմ», «Ալիս», «Սեմ»]; console.log (մարդիկ); // Tom var person3 = մարդիկ; // Sam console.log (person3); // Սեմ

Եթե ​​մենք փորձում ենք տարր մուտք գործել զանգվածի չափից ավելի մեծ ինդեքսով, մենք անորոշ ենք դառնում.

Var մարդիկ = [«Թոմ», «Ալիս», «Սեմ»]; console.log (մարդիկ); // չսահմանված

Բացի այդ, ինդեքսի միջոցով զանգվածի տարրերի արժեքները սահմանվում են.

Var մարդիկ = [«Թոմ», «Ալիս», «Սեմ»]; console.log (մարդիկ); // Թոմ մարդիկ = "Բոբ"; console.log (մարդիկ); // Բոբ

Ավելին, ի տարբերություն այլ լեզուների, ինչպիսիք են C # կամ Java- ն, կարող եք տեղադրել տարր, որն ի սկզբանե տեղադրված չէր.

Var մարդիկ = [«Թոմ», «Ալիս», «Սեմ»]; console.log (մարդիկ); // անորոշ - զանգվածի մարդկանց մեջ ընդամենը երեք տարր կա = "Bob"; console.log (մարդիկ); // Բոբ

Հարկ է նաև նշել, որ ի տարբերություն JavaScript- ի մի շարք ծրագրավորման լեզուների, զանգվածները խիստ մուտքագրված չեն, մեկ զանգվածը կարող է պահել տարբեր տեսակի տվյալներ.

Var օբյեկտներ = ["Tom", 12, true, 3.14, false]; console.log (օբյեկտներ);

տարածման օպերատոր

Տարածման օպերատորը ... թույլ է տալիս առանձին զանգվածներ վերցնել զանգվածից.

Թող թվեր =; console.log (... թվեր); // 1 2 3 4 console.log (թվեր); //

Տարածման օպերատորը նշվում է զանգվածից առաջ: Արդյունքում ... թվեր արտահայտությունը կվերադարձնի թվերի շարք, բայց դա չի լինի զանգված, այլ առանձին արժեքներ:

Բազմաչափ զանգվածներ

Arանգվածները կարող են լինել միակողմանի և բազմաչափ: Բազմաչափ զանգվածի յուրաքանչյուր տարր կարող է լինել առանձին զանգված: Վերևում մենք դիտեցինք միաչափ զանգված, այժմ եկեք ստեղծենք բազմաչափ զանգված.

Var համարներ 1 =; // մեկ ծավալային զանգված var համարներ 2 = [,]; // երկչափ զանգված

Տեսողականորեն, երկու զանգվածները կարող են ներկայացվել հետևյալ կերպ.

Միաչափ զանգվածի համարներ 1

Anանգվածի մեկ տարր ստանալու համար օգտագործվում է նաև ինդեքս.

Var tomInfo = մարդիկ;

Միայն հիմա tomInfo փոփոխականը կներկայացնի զանգված: Ներդրված զանգվածի մեջ տարր ստանալու համար մենք պետք է օգտագործենք դրա երկրորդ հարթությունը.

Console.log ("Անուն." + Մարդիկ); // Tom console.log («Տարիքը.» + Մարդիկ); // 25

Այսինքն, եթե մենք կարող ենք տեսողականորեն ներկայացնել երկչափ զանգվածը սեղանի տեսքով, ապա մարդկանց տարրը կանդրադառնա սեղանի բջիջին, որը գտնվում է առաջին տողի և երկրորդ սյունակի խաչմերուկում (առաջին հարթությունը 0 - տող, երկրորդ հարթությունը `1 - սյունակ):

Մենք կարող ենք կատարել նաև առաջադրանքը.

Var մարդիկ = [["Tom", 25, false), ["Bill", 38, true], ["Alice", 21, false]]; մարդ = 56; // առանձին արժեք նշանակել console.log (մարդիկ); // 56 մարդ = ["Bob", 29, կեղծ]; // նշանակել զանգվածային մխիթարիչ. օրագիր (մարդիկ); // Բոբ

Բազմաչափ զանգվածներ ստեղծելիս մենք չենք սահմանափակվում միայն երկչափերով, բայց կարող ենք նաև օգտագործել լայնածավալ զանգվածներ.

Var համարներ =; թվեր =; // այժմ թվերը երկչափ զանգված են =; // այժմ թվերը եռաչափ զանգված են = 5; // 3D զանգվածի առաջին տարրը 5 console.log (համարներ) է;

Ողջույն բոլորին, ովքեր հետաքրքրված են JavaScript բազմաչափ զանգվածներով և տեսակավորմամբ: Ներկայիս հրապարակումում ես կփորձեմ լուսաբանել այս թեման բոլոր մանրամասներով:

Հետևաբար, այս հոդվածը կարդալուց հետո դուք կիմանաք, թե ինչու են բազմաչափ զանգվածները օգտագործվում վեբ ծրագրերում, ինչպես են դրանք ստեղծվում և ինչպես կարող են դրանք շահարկվել և տեսակավորվել: Եկեք սկսենք սովորել:

Ինչպե՞ս են ստեղծվում բազմաչափ զանգվածները և ինչի՞ համար են դրանք:

Սկզբից, արժե հիշել, թե ինչպես է ստեղծվում կանոնավոր միաչափ զանգված:

var զանգված =

Այժմ, հիշեք, որ բազմաչափ զանգվածը զանգվածների զանգված է:Համաձայն եմ, հնչում է տավտոլոգիա: Այնուամենայնիվ, նորից կարդացեք սահմանումը: Իրոք, բազմաչափ զանգվածը բաղկացած է որոշակի թվով բնադրվածներից:

Հաշվի առեք հետևյալ իրավիճակը. Խաղի սկզբում օգտագործողը մուտքագրում է իր անունը, իսկ ավարտից հետո էկրանին ցուցադրվում է խաղացողների անունների և նրանց գրառումների գնահատման աղյուսակը:

Հասկանալի է, որ նման տեղեկատվությունը պահվում է տվյալների բազայում: Բայց երբ այն հանում ենք տվյալների բազայից, ստանում ենք բազմաչափ զանգված: Ի վերջո, յուրաքանչյուր ենթաշերտ պարունակում է խաղացողի մուտքը և վաստակած միավորների քանակը:

Ամեն ինչ այսպիսի տեսք կունենա.

var արդյունքներ = [["Markus", 333], ["Natasha", 211], ["Alexey", 124]];

Ինչպես տեսնում եք, տեղեկատվությունը կարող է պահվել տարասեռ: Այն կարող է լինել տողեր, թվեր և նույնիսկ: Դա հնարավոր է, քանի որ ներսում գտնվող զանգվածները անտիպ են:

Այս դեպքում տարրերի հասանելիությունը տեղի է ունենում կրկնակի օպերատորի միջոցով:

Նյութը համախմբելու համար վերլուծեք փոքր ծրագիր:

Արդյունքներ =

Raանգվածները բավականին հարմար միջոց են պատվիրված բարդ տվյալների պահպանման համար `դրանք մշակելիս: Բացի այդ, նրանց հետ աշխատելը շատ հարմար է, և, միևնույն ժամանակ, դրանց մշակման արագությունը բավականին բարձր է:

Տվյալների տեսակավորման մեթոդներ

JavaScript- ի զանգվածների համար կա ներկառուցված մեթոդ, որը կոչվում է տեսակավորել ()... Այս գործիքը շատ ճկուն է: Եվ հիմա ես կբացատրեմ, թե ինչու:

Եթե ​​դուք օգտագործում եք մեթոդ ՝ առանց պարամետրերի, ապա այն ինքնաբերաբար կարգավորում է ենթաշերտերը ըստ առաջին տարրի այբբենական կարգով: Այսպիսով, զանգահարելիս արդյունքները:տեսակավորել ()վերլուծված օբյեկտն այսպիսի տեսք կունենա.

Ալեքսեյ, 124

Մարկուս, 333

Նատաշա, 211

Եվ եթե փոխանակեք տարրերը յուրաքանչյուր ներկառուցված զանգվածում, կստանաք.

124, Ալեքսեյ

211, Նատաշա

333, Մարկուս

Այս դեպքում, համեմատության համար, բոլոր տարրերը ժամանակավորապես վերածվում են տողերի:

Եթե ​​կոնկրետ առաջադրանք լուծելու համար ձեզ անհրաժեշտ է տարրեր ոչ ստանդարտ եղանակով տեսակավորող գործառույթ, ապա կարող եք ինքներդ գրել և փոխանցել այն որպես պարամետր տեսակավորել ()... Պետք է հաշվի առնել, որ սովորական գործառույթը պետք է վերադարձնի.

  • դրական թիվ (սովորաբար ընտրեք 1), եթե առաջին նշված կետը հաջորդի համեմատության երկրորդին.
  • բացասական թիվ (սովորաբար -1), եթե երկրորդ ընտրված տարրը պետք է հաջորդի առաջինին.
  • զրո, եթե երկու ստուգված արժեքները հավասար են:

Որպես օրինակ, վերցնենք սկզբնական զանգվածը արդյունքներըտեսակավորել ըստ կետերի: Ավելին, արդյունքները կտեսակավորվեն ամենաբարձրից մինչև ամենացածրը: Դա կարելի է անել երկու եղանակով.

Առաջին տարբերակում ես փոխեցի տեսակավորման տրամաբանությունը, այսինքն. այն իրավիճակում, երբ անհրաժեշտ է դրական թիվ վերադարձնել, ես բացասական եմ վերադարձնում և հակառակը:

Գրանցման աղյուսակ.

Բայց երկրորդ մեթոդով ես դասակարգման տրամաբանությունը թողեցի անձեռնմխելի, բայց լրացուցիչ օգտագործեցի մեկ այլ մեթոդ ` հակադարձ ()... Ինչպես ցույց է տալիս անունը, հակադարձումը հակադարձում է տարրերի կարգը:

Հետևաբար, տեսակավորման () գործառույթը այսպիսին կլինի.

1 2 3 4 5 գործառույթը RecordSort (a, b) (եթե (a> b) վերադարձնել 1; հակառակ դեպքում, եթե (a< b) return -1; else return 0; }

գործառույթը RecordSort (a, b) (եթե (a> b) վերադարձնել 1; հակառակ դեպքում, եթե (a< b) return -1; else return 0; }

Դրանից հետո եկեք ավելացնենք վերը նշված մեթոդը:

Եզրակացությունը կատարվում է նույն ձևով:

Ուզում եմ ձեր ուշադրությունը հրավիրել մեկ կարևոր կետի վրա. Այս գործառույթներն օգտագործելիս բոլոր փոփոխությունները տեղի են ունենում այն ​​զանգվածում, որին դրանք կիրառում եք: Այսպիսով, եթե ձեզ անհրաժեշտ է պահպանել տվյալների սկզբնական ձևը, ապա ստեղծեք պատճենը, այնուհետև խմբագրեք այն:

Դե, այնպես որ, ես խոսեցի բազմաչափ զանգվածների և դրանց տեսակավորման մասին: Եթե ​​ձեզ դուր եկավ հոդվածը, ապա բաժանորդագրվեք բլոգին և կարդացեք այլ հավասարապես հետաքրքիր հրապարակումներ: Շնորհակալ կլինեմ վերահրապարակների համար: Մինչև հաջորդ անգամ!

Ցտեսություն!

Հարգանքներով ՝ Ռոման Չուեշով