God dag till alla. Alexey Gulynin är i kontakt. I den senaste artikeln tittade vi på växelhuskonstruktionen i javascript. I den här artikeln skulle jag vilja berätta vilka arrayer som finns i Javascript. Konceptet med en array spelar ut viktig roll inte bara i Javascript, utan i all programmering. En variabel, till exempel en array, innehåller inte ett element utan flera. Syntaxen för att skapa en array är följande:
Var mas = new Array(värde1, värde2,..., värdeN);
I I detta fall en arrayvariabel mas skapas med värdena indikerade inom parentes. Observera att arrayen skapas med det nya nyckelordet. Du kan komma åt arrayelement genom att ange arraynamnet och hakparentes arrayindex. Arrayindexet sätts från noll. Låt oss ge ett exempel på en array som består av 4 element och visar det andra elementet:
var mas = new Array("privet", 1, 10, 5); document.write("Andra arrayelement = "+mas); // siffran 10 kommer att visas
Om vi sätter mas så kommer "liguster" att skrivas ut, eftersom indexeringen av arrayen börjar från noll. Låt oss nu ta reda på hur man visar alla element i en array. För att göra detta måste du använda en slinga. Förutom att kunna loopar i Javascript behöver du känna till egenskapen length för arrayer, som returnerar antalet element i en array (eller, med andra ord, dess längd). Låt oss skriva ut längden på mas-arrayen:
var mas = new Array("privet", 1, 10, 5); document.write("Arraylängd = "+mas.length); // siffran 4 kommer att visas
Skriver ut alla arrayelement:
var mas = new Array("privet", 1, 10, 5); var i; för (i = 0; i< mas.length; i++) document.write(mas[i]+" ");
Hittills har vi tittat på endimensionella arrayer. I allmänhet kan arrayer vara flerdimensionella. Det viktigaste du behöver förstå är att till exempel en tvådimensionell array är en array vars element är arrayer. Låt oss titta på det här problemet: du måste skapa en tvådimensionell 3 x 3 array, vars element specificeras av användaren, och mata ut denna array. Här kommer vi att använda promptoperatören för att begära ett nummer från användaren:
var mas = new Array(); //deklarera arrayen const n = 3; //deklarera en konstant, dvs. Vår array är 3 gånger 3 stor //för att definiera en tvådimensionell array måste du använda en dubbel loop var i; var j; för (i = 0; i< n; i++) { mas[i] = new Array();//Здесь мы как раз каждый элемент массива делаем массивом for (j = 0; j < n; j++) { mas[i][j] = prompt("[" + i +","+j+"]= " ,"..."); //запрашиваем число у пользователя } } for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { document.write("[" + i +","+j+"]= "+ mas[i][j]);} //выводим элемент массива document.write(""); //gå till ny linje efter varje fylld rad i arrayen)
I vårt fall motsvarar en tvådimensionell array (till exempel) följande struktur: mas=[,,] . Du kan se att arrayen har 3 element, som var och en är en array i sig.
Till en början var uppgiften för Javascript att göra dynamiska webbplatser. I min praktik har jag aldrig använt tvådimensionella arrayer, endast endimensionell, så kunskapen om arrayer som du fick från den här artikeln kommer att vara tillräckligt. I en av följande artiklar kommer jag att prata om Array-objektet, dess egenskaper och metoder.
Vad är en array
En matris är en datatyp som lagrar numrerade värden. Varje numrerat värde kallas ett arrayelement, och numret som elementet är associerat med kallas dess index. JavaScript-matriser är otypade, vilket innebär att ett element i matrisen kan vara av vilken typ som helst, och olika element en array kan ha olika typer. Förutom JavaScript-matriserär dynamiska, vilket betyder att deklarera fixad storlek inte nödvändigt och du kan lägga till nya element när som helst.
Skapa en ArrayEn array kan skapas på två sätt, det första är att skapa en array med hjälp av en array literal - hakparenteser, inom vilken det finns en lista med element separerade med kommatecken.
Var tom = ; //tom array var nummer = ; //array med 5 numeriska element var diff = ; //array med 3 element olika typer
Värdena behöver inte vara enkla (siffror eller strängar) - de kan också vara andra uttryck, till exempel: objektsliteral, andra arrayer eller funktioner.
Var num = 700; var tab = , num + 1];
Det andra sättet att skapa en array är att anropa Array()-konstruktorn. Det finns tre sätt att anropa Array()-konstruktorn.
- Anropa en konstruktor utan argument:
I det här fallet skapas en tom array, motsvarande en tom literal.
- Konstruktorn specificerar uttryckligen värdena för n arrayelement:
I det här fallet får konstruktören en lista med argument, som blir element i den nya arrayen. Argumenten skrivs till arrayen i den ordning som de anges.
- Tilldela utrymme för senare tilldelning av värden. Detta görs genom att ange ett nummer i arraydefinitionen parentes:
Denna metod för att definiera en array innebär att tilldela arrayen ett visst antal element (som vart och ett har värdet odefinierat) och sedan tilldela värden allt eftersom skriptet fortskrider. Detta formulär används vanligtvis för att förallokera en array om dess längd är känd i förväg.
Läsa, skriva och lägga till arrayelementMatriselement nås med operatorn. Arrayelement i JavaScript numreras från noll. För att uppnå nödvändigt element array måste du ange dess nummer inom hakparenteser.
Var-tal = ; document.write(nummer + ", "); //första elementet i arrayen document.write(nummer + ", "); //andra element i arrayen document.write(nummer + ", "); //tredje elementet i arrayen document.write(numbers); //fjärde elementet i arrayen
Arrayelement kan ändras:
Var-tal = ; siffror = 10; //ändrade det första elementet i arrayen -
Tillägga nytt element array, tilldela bara ett nytt värde:
Var-tal = ; siffror = 7; //blev
Obs: JavaScript-matriser kan lagra valfritt antal element av vilken typ som helst.
Array längdAlla arrayer, oavsett om de är skapade med Array()-konstruktorn eller definierade med en arrayliteral, har särskild egendom längd, som återkommer Totala numret element lagrade i en array. Eftersom arrayer kan ha odefinierade element (de med värdet undefined) är en mer exakt formulering att length-egenskapen alltid är ett större än arrayelementets största index (antal). Length-egenskapen uppdateras automatiskt och förblir korrekt när nya element läggs till i arrayen.
Var v = new Array(); // v.length == 0 (inget element är definierat) v = new Array(1,2,3); // v.length == 3 (element 0–2 definierade) v = ; // v.length == 2 (element 0 och 1 är definierade) document.write(v.length);
För att få det sista elementet i arrayen kan du också använda egenskapen length:
Var v = ["JavaScript", "Egenskap", "Arrayer"]; document.write(v);
Det sista elementet har ett index 1 mindre än längden på arrayen, eftersom räkningen börjar från noll. Därför, om du inte vet det exakta antalet element, men du behöver hänvisa till det sista elementet i arrayen, använd posten: v.length - 1.
Slingor genom arrayelementDen vanligaste användningen av egenskapen length är att loopa genom arrayelement:
Det här exemplet förutsätter att elementen i arrayen är sammanhängande och börjar vid det första elementet (index 0). Om så inte är fallet, innan du kommer åt varje element i arrayen, måste du kontrollera om det är definierat:
Var frukter = ["äpple", "banan", "jordgubbe", "persika"]; för(var i = 0; i
En loop kan också användas för att initiera arrayelement:
Var bar = new Array(10); för(var i = 0; i
Trunkering och odling av en arrayNär man arbetar med arrayer uppdateras length-egenskapen automatiskt så att vi inte behöver oroa oss för det själva. Men en sak som är värd att nämna är att längdegenskapen är tillgänglig inte bara för läsning, utan även för skrivning. Om length-egenskapen är inställd på ett värde som är mindre än det nuvarande, trunkeras arrayen till den nya (specificerade) längden, alla element som inte faller inom det nya indexintervallet kasseras och deras värden går förlorade, även om längden är senare kommer värdena inte att återställas.
Var foo = ; foo.length = 1; //förkorta till 1 element - foo.length = 4; //återställ det tidigare antalet element document.write(foo); //inget tidigare värde
Mest på ett enkelt sätt rensning av arrayen blir: foo.length = 0.
Om egenskapen length görs större än dess nuvarande värde, kommer nya odefinierade element att läggas till i slutet av arrayen, vilket ökar arrayen till den angivna storleken.
Ta bort Array ElementsDelete-operatorn skriver värdet odefinierat till ett arrayelement, medan själva elementet fortsätter att existera. För att ta bort element så att de återstående elementen flyttas till det lediga utrymmet måste du använda en av de fördefinierade arraymetoderna. Metoden Array.shift() tar bort det första elementet i arrayen, pop() tar bort det sista elementet i arrayen, splice() tar bort ett eller flera element var som helst i arrayen. Hur man använder dessa metoder kommer att beskrivas i detalj i nästa kapitel.
Flerdimensionella arrayerKom ihåg att JavaScript-matriser kan innehålla andra matriser som element. Denna funktion kan användas för att skapa flerdimensionella arrayer. För att komma åt element i en array av arrayer behöver du bara använda hakparenteser två gånger.
Var matris = [ , , ]; document.write(matris); //centralt element valt
Låt oss titta på vad som skrivs i exemplet: matris är en matris av matriser med tal. Alla element i matris[n] är en array av tal. För att komma åt ett specifikt nummer i en array måste du skriva matris[n][n], de andra hakparenteserna indikerar indexet för elementet i den interna arrayen.
//analog föregående post- skapande med konstruktorn var table = new Array(3); för(var i = 0; i
Associativa arrayerObjekt kan användas som associativa arrayer. Lite teori - associativa arrayer (även kallade hash-tabeller) låter dig använda strängar istället för index. Att använda associativa arrayer är mycket likt att använda ett egenskapsnamn vanligt föremål, men i det här fallet när du arbetar i arrayformat. Eftersom JavaScript inte har metoder för att arbeta med associativa arrayer används de mycket mindre frekvent än vanliga, även om de lika gärna kan vara användbara för att lagra information och göra det lättare att komma ihåg element som behöver nås.
Var s_list = nytt objekt(); s_list["fat"] = "Fett"; s_list["small"] = "Liten"; s_list["name"] = "Homer"; for (var x i s_list) //visa alla element document.write(s_list[x] + "
");
- Översättning
De flesta applikationer som utvecklas idag kräver interaktion med någon form av datamängd. Att hantera element i samlingar är en vanlig operation som du förmodligen har stött på. När du till exempel arbetar med arrayer kan du utan att tänka använda en vanlig for loop, som ser ut ungefär så här: for (var i=0; i< value.length; i++){} . Однако, лучше, всё-таки, смотреть на вещи шире.
Anta att vi behöver visa en lista med produkter och, om nödvändigt, dela upp den i kategorier, filtrera, söka igenom den, ändra den här listan eller dess element. Kanske måste du snabbt utföra några beräkningar som involverar elementen i en lista. Låt oss säga att du behöver lägga till något med något, multiplicera något med något. Är det möjligt att hitta verktyg i JavaScript som låter dig lösa sådana problem snabbare och mer bekvämt än att använda en vanlig for loop?
Faktum är att det finns sådana faciliteter i JavaScript. Några av dem diskuteras i materialet, vars översättning vi presenterar för din uppmärksamhet idag. I synnerhet talar vi om spread-operatorn, for...of loop, och metoderna include(), some(), every(), filter(), map() och reduce(). Vi kommer mest att prata om arrayer här, men de tekniker som diskuteras här är generellt lämpliga för att arbeta med andra typer av objekt.
Det bör noteras att recensioner moderna tillvägagångssätt JS-utveckling inkluderar vanligtvis exempel som förbereds med hjälp av pilfunktioner. Kanske använder du dem inte så ofta - kanske för att du inte gillar dem, kanske för att du inte vill spendera för mycket tid på att lära dig något nytt, eller så är de helt enkelt inte rätt för dig. Därför kommer här, i de flesta situationer, två alternativ för att utföra samma åtgärder att visas: att använda normala funktioner(ES5) och använda pilfunktioner (ES6). För de som är nya i att arbeta med pilfunktioner är inte pilfunktioner motsvarigheten till funktionsdeklarationer och funktionsuttryck. Du bör inte ersätta det ena med det andra. Särskilt beror detta på att i vanliga och pilfunktioner nyckelord detta beter sig annorlunda.
- Det är enkelt och snabbt sätt"dra ut" dess individuella element från en array.
- Denna operatör är lämplig för att arbeta med array- och objektliteral.
- Detta är en snabb och intuitiv metod för att arbeta med funktionsargument.
- Tilläggsoperatören tar inte mycket plats i koden - den ser ut som tre punkter (...).
- Det här är ett enkelt sätt att lägga till eller uppdatera samlingsobjekt.
- For...of-loopen låter dig utföra olika beräkningar med hjälp av element (summering, multiplikation och så vidare).
- Den är bekväm att använda när du behöver kontrollera eventuella förhållanden.
- Dess användning leder till att man skriver renare och mer läsbar kod.
- Metoden include() är användbar för att skapa enkla mekanismer för datahämtning.
- Det ger utvecklaren ett intuitivt sätt att fastställa förekomsten av viss data i en array.
- Det är bekvämt att använda i villkorliga uttryck för att modifiera, filtrera element och utföra andra operationer.
- Dess användning leder till förbättrad kodläsbarhet.
- Metoden some() låter oss kontrollera om arrayen innehåller minst ett av elementen vi är intresserade av.
- Den utför ett tillståndstest med den funktion som skickas till den.
- Denna metod är bekväm att använda.
- Metoden every() låter dig kontrollera om alla element i en array uppfyller ett villkor.
- Villkor kan ställas in med hjälp av funktioner.
- Det främjar ett deklarativt förhållningssätt till programmering.
- Metoden filter() undviker modifiering av den ursprungliga matrisen.
- Det låter dig bli av med onödiga element.
- Det förbättrar kodläsbarheten.
- Map()-metoden undviker behovet av att ändra elementen i den ursprungliga arrayen.
- Den kan användas för att enkelt modifiera arrayelement.
- Det förbättrar kodläsbarheten.
- Med metoden reduce() kan du beräkna summan eller medelvärdet av elementen i en array.
- Denna metod påskyndar och förenklar beräkningar.
Matriser är en av de mest använda typerna av variabler som låter dig lagra många sekventiella värden på "ett ställe." Men när det kommer till JavaScript finns det utrymme för förbättringar.
I den här artikeln ska vi titta på tre föga kända tekniker som kan användas när du arbetar med arrayer.
1. Lägga till anpassade egenskaper till arrayerOm du använder sökning för att hitta definitionen av en array inom JavaScript-språk, då kommer de flesta källor att hävda det den här typen Värdet på en variabel representeras som ett objekt.
Generellt sett är många av de saker vi möter i JavaScript objekt. Det skulle vara rättvist att notera att språket också innehåller "primitiva" datatyper, men deras värden används på något sätt i egenskaper inuti objekt.
2. Åtkomst till arrayelement i en loopEftersom matrisindex bara kan ta positiva värden börjar räkningen från noll. Vi kan senare använda detta index för att komma åt arrayelementet vid en given loopiteration.
ECMAScript6 introducerade ett sätt att scrolla genom en array utan att använda index, men genom en ny for…of loop.
For...of-loopen är utformad för att iterera genom elementen i en array utan att påverka elementets index.
Var ary = ["apelsin", "äpple", "litchi"]; for (låt objekt av ary)( console.log(item); ) // "orange", "äpple", "lychee" Som jämförelse: utmatning av objektindex i en for-loop. var ary = ["apelsin","äpple","litchi"]; för (var objekt = 0; objekt< ary.length; item++){ console.log(item); } // 0, 1, 2
3. Antalet element är inte dimensionen på arrayenNär vi talar om storleken på en array tänker vi vanligtvis på det som antalet element som lagras i den. Faktum är att detta inte är helt sant - längdegenskapen beräknas beroende på elementets maximala index.
Längdegenskapen är mycket tvetydig. För att verifiera detta, titta bara på följande manipulationer:
Var ary = ; ary.length = 3; console.log(ary.length); // 3 ary = "abcd"; console.log(ary.length); // 6
I det sista exemplet räckte det med att placera elementet i den femte positionen, vilket resulterade i att längden på arrayen blev 6. Om du tror att index från 0 till 4 kommer att skapas automatiskt, kommer du att ha fel. Detta kan kontrolleras med in-operatorn.
Var ary = ; ary.length = 3; console.log(ary.length); // 3 ary = "abcd"; console.log(ary.length); // 6 console.log(0 i ary); // falskt
I det här fallet skulle det vara rättvist att kalla arrayen "gles".
Vi kan också manipulera egenskapen length för att trimma arrayer. Exemplet nedan visar att "förlora" elementet vid index 5 genom att minska egenskapen length för arrayen.
Var ary = ; ary.length = 3; console.log(ary.length); // 3 ary = "abcd"; console.log(ary.length); // 6 ary.length = 2; console.log(ary.length); // 2 console.log(ary); // odefinierat
I JavaScript, såväl som i andra programmeringsspråk, används olika metoder för att arbeta med arrayer.
Metoder förenklar konstruktionen av logik och dess implementering i ett skript.
Nedan finns grundläggande metoder för att arbeta med arrayer i JS.
skjuta påMetoden push() lägger till ett värde i slutet av arrayen.
Låt arr = ; arr.push(312); console.log(arr); // →
popMetoden pop() tar bort det sista elementet från arrayen eller returnerar dess värde.
Låt arr = ; arr.pop(); console.log(arr); // →
Med hjälp av möjligheten att få värdet av det sista elementet i en array som ett exempel kan vi få bildformatet:
Låt img = "https://example.com/img/namn.png"; let format = img.split(".").pop(); console.log(format); // → png console.log(img.split(".")); // → ["https://exempel", "com/img/namn", "png"]
avväxlingMetoden unshift() lägger till ett element i början av arrayen.
Låt arr = ; arr.unshift(312); console.log(arr); // →
flyttaMetoden shift() tar bort det första elementet från arrayen.
Låt arr = ; arr.shift(); console.log(arr); // → ;
Det måste förstås att vid användning skiftmetoder och unshift ändrar varje element i arrayen sitt index. Detta kan sakta ner programexekveringen om arrayen är stor. delaMetoden split() används för att omvandla en sträng till en array. Split delar en sträng enligt den angivna parametern.
Låt str = "Anya, Masha, Sasha, Dasha"; // detta är en sträng låt arr = str.split(", "); console.log(arr); // → ["Anya", "Masha", "Sasha", "Dasha"] är en array
Ansluta sigMetoden join() kombinerar matriselement till en sträng med avgränsningstecknet som anges i parametern.
Låt arr = ["Notpad++", "Sublime", "VSCode"]; // detta är en array låt str = arr.join(", "); console.log("Redaktörer för kod: " + str); // → "Redaktörer för kod: Notpad++, Sublime, VSCode"
skivaMetoden slice() skapar en ny array till vilken den kopierar element från källan, med början från elementet med indexet för den första parametern som skickas till metoden, till elementet med indexet för den andra parametern.
Till exempel: slice(3, 7) returnerar element med index 3, 4, 5, 6. Elementet med index 7 kommer inte att inkluderas i arrayen.
Om slice() skickas en parameter med negativt värde, då returnerar den en ny array med antalet element som anges i parametern, men som redan är tagna från slutet av den ursprungliga arrayen.
Slicemetoden ändrar inte den ursprungliga arrayen.
Här är några exempel på metoden slice() i aktion:
Låt arr = ["A", "B", "C", "D", "E", "F", "G"]; // Returnerar en array som innehåller element med index från 2 till 5 console.log(arr.slice(2, 5)); // → ["C", "D", "E"] // Returnerar en ny array som innehåller element med index från 3 till arr.length console.log(arr.slice(3)); // → ["D", "E", "F", "G"] // Returnerar en kopia av den ursprungliga arrayen console.log(arr.slice()); // → ["A", "B", "C", "D", "E", "F", "G"] // Returnerar en ny array som består av sista tre element i källkoden console.log(arr.slice(-3)); // → ["E", "F", "G"]
splitsaMetoden splice() modifierar innehållet i en array genom att ta bort befintliga element och/eller lägga till nya.
Syntax:
Array.splice(start, deleteCount[, item1[, item2[, ...]]])
Alternativ:
- start - Indexet där man ska börja byta array. Om det är större än längden på arrayen kommer det verkliga indexet att ställas in på längden på arrayen. Om det är negativt, anger elementets index från slutet.
- deleteCount - Ett heltal som anger antalet gamla element som ska tas bort från arrayen. Om deleteCount är 0 tas inga element bort. I det här fallet måste du ange minst ett nytt element. Om deleteCount mer kvantitet element som finns kvar i arrayen från startindexet, då kommer alla element fram till slutet av arrayen att raderas.
- itemN - Valfria parametrar. Element som ska läggas till i arrayen. Om du inte anger något element, kommer splice() helt enkelt att ta bort element från arrayen.
Om antalet specificerade element som ska infogas skiljer sig från antalet element som ska tas bort, kommer matrisen att ändra längd efter anropet.
Låt arr = ["Barca", "Shakhtar", "Manchester United", "Milan", "Real", "Ajax", "Juventus"]; låt nax = arr.splice(2, 3); arr.splice(2, 3); console.log(nax); // → ["Manchester United", "Milan", "Real"] console.log(arr); // → ["Barca", "Shakhtar"] arr.splice(1, 0, "Zenit", "CSKA", "Spartak"); console.log(arr); // → [Barça, Zenit, CSKA, Spartak, Shakhtar]
omvändMetoden reverse() vänder ordningen på arrayelementen. Som ett resultat blir det första elementet i arrayen det sista, och det sista elementet blir det första.
Låt arr = ; console.log(arr.reverse()); // → console.log(["Alice", "BG", "GO", "DDT"].reverce()); // → ["DDT", "GO", "BG", "Alice"]
KartaMap()-metoden går igenom elementen i arrayen, utför specificerade åtgärder på dem och returnerar en kopia av arrayen med de ändrade elementen.
I exemplet nedan lägger vi till indexvärdet för detta element till varje matriselement (7 + 0, 2 + 1, 15 + 2, 4 + 3, 31 + 4):
Låt arr = ; låt testMap = arr.map((element, index) => element + index); console.log(testMap); //
eller multiplicera varje värde i arrayen, till exempel med 12
Låt arr = ; låt testMap = arr.map(a => a * 12); console.log(testMap); // →
filtreraMetoden filter() används för att filtrera arrayer. Den itererar genom arrayen och returnerar endast de element som klarar ett givet villkor.
Låt oss till exempel filtrera värdena för en array av siffror, så att endast de som är större än 21
Låt arr = ; låt testFilter = arr.filter(element => element > 21); console.log(testFilter); // →
Observera att 21 inte inkluderades i arrayresultatet, eftersom villkoret var att returnera något som är större än 21. För att 21 ska inkluderas i arrayen anger vi villkoret som större än eller lika med: element >= 21
minskaMetoden reduce() går sekventiellt igenom elementen i arrayen och ackumuleras mellanresultat enligt den funktion som anges i funktionens tillstånd. I slutresultatet returnerar det bara ett värde.
Denna metod används ofta för att hitta summan av alla tal i en matris. Exempel:
Låt arr = ; let summa = arr.reduce((acc, element) => acc + element); console.log(summa); // → 370
sorteraMetoden sort() används för att sortera arrayelement enligt specificerade parametrar.
Exempel – låt oss ta en uppsättning siffror och sortera dem i stigande ordning:
Låt arr = ; låt testSortArr = arr.sort((a, b) => a - b); console.log(testSortArr); // →
inkluderarMetoden include() avgör om arrayen innehåller specifikt element, returnerar sant eller falskt beroende på detta.
Exempel på användning av include() .
Här är ett logiskt uttryck:
Låt djur = "hund"; if (djur == "katt" || djur == "hund" || djur == "lejon" || djur == "häst") ( // ........ )
Med inkluderingsmetoden kan du skriva det så här:
Låt djur = "hund"; const animals = ["katt", "hund", "lejon", "häst"]; if (djur.inkluderar(djur)) ( // ........... )