Om Arrays
- 08/26/2020
- 14 minutter på at læse
-
- S
- s
- c
en Kort Beskrivelse
Beskriver arrays, som er data strukturer designet til at storecollections af elementer.
Lang beskrivelse
et array er en datastruktur, der er designet til at gemme en samling af elementer.Elementerne kan være af samme type eller forskellige typer.
begynder i Powerindo .s Po .ershell 3.,0, en samling af nul eller et objekt harnogle egenskaber af arrays.
oprettelse og initialisering af et array
for at oprette og initialisere et array skal du tildele flere værdier til en variabel. De værdier, der er gemt i arrayet, afgrænses med et komma og adskilles fra varierbart navn af tildelingsoperatøren (=
).,
For eksempel, til at oprette et array med navnet $A
, der indeholder syv numerisk (int)værdier af 22, 5, 10, 8, 12, 9, og 80, skriv:
komma kan også bruges til at initialisere et enkelt element-array ved at placere thecomma før den enkelt vare.
For eksempel, til at oprette en enkelt post array med navnet $B
, der indeholder singlevalue af 7, skriv:
Du kan også oprette og initialisere et array ved hjælp række operatør (..
).,Følgende eksempel opretter et array, der indeholder værdierne 5 til 8.
som følge heraf indeholder $C
fire værdier: 5, 6, 7 og 8.
Når der ikke er angivet nogen datatype, opretter Po .ershell hvert array som et objectarray (System.Genstand). For at bestemme datatypen af et array skal du brugegettype() metode., For eksempel, for at bestemme datatypen af $A
array, skal du skrive:
for At oprette en stærkt skrevet array, som er et array, der kan indeholde onlyvalues af en bestemt type, skal kaste den variabel som en array-type, sådan asstring, lang, eller int32. For at kaste et array skal du forudvariabelt navn med en array type vedlagt i parentes., For eksempel, til at oprette a32-bit integer array med navnet $ia
, der indeholder fire heltal (1500, 2230, 3350, – og 4000), skriv:
Som et resultat, den $ia
array kan kun indeholder heltal.
Du kan oprette arrays, der er støbt til enhver understøttet type i Microsoft.NET rammer. For eksempel de objekter, der Get-Process
henter tilrepræsentative processer er af systemet.Diagnosticering.Proces type., For at oprette astrongly skrevet vifte af processen objekter, skal du indtaste følgende kommando:
array sub-udtryk operatør
array sub-udtryk operatør opretter et array fra de udtalelser, insideit. Uanset hvad erklæringen inde i operatøren producerer, vil operatørenplacer den i en Matri.. Selvom der er nul eller et objekt.
syntaksen for arrayoperatøren er som følger:
Du kan bruge arrayoperatøren til at oprette et array med nul eller et objekt., Forexample:
array operatøren er nyttigt i scripts, når du får objekter, men donot vide, hvor mange genstande, du får. For eksempel:
For mere information om array-underekspressionsoperatøren, seeabout_Operators.
adgang til og brug af arrayelementer
læsning af et array
Du kan henvise til et array ved at bruge dets variabelnavn. For at vise alleelementer i arrayet, skriv arraynavnet., For eksempel, under forudsætning $a
er anarray, der indeholder de hele tal 0, 1, 2, indtil 9; at skrive:
kan Du henvise til elementer i et array ved hjælp af et indeks, der begynder atposition 0. Vedlæg indeksnummeret i parentes., For eksempel, for at vise de første element i $a
array, skal du skrive:
for At vise den tredje element i $a
array, skal du skrive:
Du kan hente en del af array ved hjælp af en række operatør for indekset. Forexample, at hente den anden til femte elementer i array, du wouldtype:
Negative tal tæller fra slutningen af arrayet., For eksempel henviser” -1 ” tildet sidste element i arrayet. For at vise de sidste tre elementer af thearray, i indeks stigende rækkefølge, skriv:
Hvis du skriver negative indekser i faldende orden, og dit output ændringer.
Vær dog forsigtig, når du bruger denne notation. Notationen cykler fraende grænse til begyndelsen af arrayet.,
kan Du bruge plus-operator (+
) til at kombinere et område med en liste af elementsin et array. For eksempel, for at vise elementer på indeks positioner, 0, 2, and4 gennem 6, skriv:
Også, at angive flere intervaller, og de enkelte elementer, som du kan bruge plusoperator., For eksempel, at elementerne i liste nul til to, fire og seks, og theelement på ottende positionelle type:
Iterationer over array elementer
Du kan også bruge looping konstruktioner, såsom ForEach For, og Mens loops, torefer til elementer i et array. For eksempel, for at bruge et ForEach loop todisplay elementer i $a
array, skal du skrive:
Foreach loop iterates gennem matrix og returnerer hver værdi i thearray, indtil man kommer til enden af matrixen.,
For-løkken er nyttig, når du øger tællere, mens du undersøger elementerne i en Matri.. For eksempel, for at bruge en For-løkke til at vende tilbage, hver othervalue i et array, skal du skrive:
Du kan bruge en While-løkke til at få vist elementer i et array, indtil en definedcondition er ikke længere tilfældet., For eksempel, for at vise de elementer i $a
array, mens array-indeks er mindre end 4, skriv:
Ejendomme af arrays
Tæl eller Længde eller LongLength
for At bestemme, hvor mange elementer der er i et array, brug Length
ejendommen eller densCount
alias. Longlength
er nyttigt,hvis arrayet indeholder mere end2,147,483, 647 elementer.
Rang
Returnerer antallet af dimensioner i array., De fleste arrays i Po .ershell haren dimension, kun. Selv når du tror, du er ved at opbygge en multidimensionalarray; som i følgende eksempel:
følgende eksempel viser, hvordan du opretter en virkelig multidimensional array usingthe .Net Framework.
metoder til arrays
Clear
indstiller alle elementværdier til standardværdien af arrayets”s-elementtype.Clear () – metoden nulstiller ikke størrelsen på arrayet.,
i det følgende eksempel $a
er en række objekter.
I dette eksempel: $intA
udtrykkeligt har skrevet at indeholde heltal.
ForEach
Giver mulighed for at iterere over alle elementer i arrayet, og udføre en given operationfor hvert element i arrayet.
ForEach-metoden har flere overbelastninger, der udfører forskellige operationer.,
ForEach(scriptblock udtryk)
ForEach(scriptblock udtryk, objekt argumenter)
Denne metode blev tilføjet i PowerShell v4.
Bemærk
syntaksen kræver brug af en scriptblok. Parenteser er valgfrie, hvisscriptblock er den eneste parameter. Der må heller ikke være et mellemrum mellem metoden og åbningsparentesen eller bøjlen.
følgende eksempel viser, hvordan du bruger foreach-metoden. I dette tilfældeintent er at generere kvadratværdien af elementerne i arrayet.,
ligesom -ArgumentList
parameter ForEach-Object
arguments
parameter tillader passage af en vifte af parametre til et script blockconfigured til at acceptere dem.
For mere information om Argumentlistens adfærd, seeabout_Splatting.,
ForEach(type convertToType)
ForEach
metode kan bruges til hurtigt at kaste elementer til en differenttype; det følgende eksempel viser, hvordan til at konvertere en liste af string datoer type.
ForEach(string propertyName)
ForEach(string propertyName, objekt newValue)
ForEach
metode kan også bruges til hurtigt at hente, eller sæt propertyvalues for hver vare i samlingen.,
ForEach(string methodName)
ForEach(string methodName, objekt argumenter)
Endelig, ForEach
metoder, der kan bruges til at udføre en metode, der på hver post i den indsamling.
ligesom -ArgumentList
parameter ForEach-Object
arguments
parameter tillader passage af en vifte af parametre til et script blockconfigured til at acceptere dem.
Bemærk
starter i Powerindo .s Po .ershell 3.,0 hentning egenskaber og e canecutingmethods for hvert element i en samling kan også opnås ved hjælp af “Methodsof skalar objekter og samlinger” du kan læse mere om, at hereabout_methods.
hvor
tillader at filtrere eller vælge elementerne i arrayet. Scriptet skal evaluateto noget anderledes end: nul (0), tom streng, $false
eller $null
forthe element at vise, når Where
Der er en definition på det Where
metode.,
Bemærk
syntaksen kræver brug af en scriptblok. Parenteser er valgfrie, hvisscriptblock er den eneste parameter. Der må heller ikke være et mellemrum mellem metoden og åbningsparentesen eller bøjlen.
Expression
er scriptblock, der er nødvendige for filtrering, den mode
valgfrit argument giver mulighed for yderligere udvælgelse kapaciteter, ognumberToReturn
valgfrit argument giver mulighed for at begrænse, hvor mange itemsare tilbage fra filteret.,p>De acceptable værdier for mode
:
- Standard (0) – Returnerer alle emner
- Første (1) – Returnerer det første punkt
- Sidste (2) – Returnerer det sidste punkt
- SkipUntil (3) – Spring elementer, indtil betingelse er sand, den returnere remainingitems
- Indtil (4) – Returnerer alle poster, indtil betingelse er sand
- Split (5) – Returnerer et array af to elementer
- første element indeholder matchende emner
- andet element, der indeholder de resterende elementer
følgende eksempel viser, hvordan for at vælge alle de ulige tal fra matrixen.,
Dette eksempel viser, hvordan du vælger de strenge, der ikke er tomme.
Standard
Default
mode filtre elementer med Expression
scriptblock.
Hvis der er angivet et numberToReturn
, angives det maksimale antal returvarer.,
Bemærk!
Både Default
mode og First
mode vende tilbage til den første(numberToReturn
) elementer, og kan bruges i flæng.
Sidste
SkipUntil
SkipUntil
mode springer alle objekter i en samling, indtil et objekt passesthe script blok udtryk filter. Den returnerer derefter alle resterende collectionitems uden at teste dem. Kun en forbipasserende vare testes.
dette betyder, at den returnerede samling indeholder både passerende ogikke-passerende elementer, der ikke er testet.,
antallet af returnerede varer kan begrænses ved at sende en værdi tilnumberToReturn
argument.
Indtil
Until
mode omskifter SkipUntil
mode. Det returnerer alle elementer i acollection indtil et element passerer script blok udtryk. Når en varepasserer scriptblock-udtrykket, stopper Where
– metoden behandlingen af elementer.
dette betyder, at du modtager det første sæt ikke-passerende elementer fraWhere
– metoden., Når en vare passerer, testes eller returneres resten ikke.
antallet af returnerede varer kan begrænses ved at sende en værdi tilnumberToReturn
argument.
Bemærk!
Både Until
og SkipUntil
operere under den forudsætning, for IKKE at teste en batchof elementer.
Until
returnerer elementerne før første pass.
SkipUntil
returnerer alle varer efter første pass, herunder den første passerende vare.,
Split
Split
mode splits, eller grupper samling elementer i to separatecollections. Dem, der passerer scriptblock udtryk, og dem der ikke gør det.
Hvis en numberToReturn
er angivet, indeholder den første samling thepassing elementer, ikke at overskride den angivne værdi.
de resterende objekter, selv dem, der passerer udtryksfilteret, eromvendt i den anden samling.,
Få medlemmer af et array
til At få de egenskaber og metoder for en matrix, såsom Længde ejendom ogkommissionens SetValue metode, skal du bruge InputObject parameter i Get-Member
cmdlet.
Når du rør et array til Get-Member
, PowerShell sender de elementer, oneat en tid og Get-Member
returnerer den type af hvert element i array (ignoringduplicates).
Når du bruger parameteren InputObject, returnerer Get-Member
medlemmerne af arrayet.,for eksempel får følgende kommando medlemmerne af $a
arrayvariable.
Du kan også få medlemmer af et array ved at skrive et komma (,) før thevalue, der sendes til Get-Member
cmdlet. Kommaet gør arrayet til det andet element i en række arrays. Po .ershell pipes arrays one Ata time og Get-Member
returnerer medlemmerne af arrayet. Ligesom de næste toeksempler.,
Manipulere et array
Du kan ændre elementer i et array, tilføje et element til et array, andcombine værdier fra to arrays i en tredje array.
for At ændre værdien af et bestemt element i et array, skal du angive datatabelnavn og indekset for det element, du vil ændre, og derefter bruge theassignment operatør (=
) til at angive en ny værdi for elementet., For eksempel,for at ændre værdien af det andet element i $a
array (indeks position 1) 10, skriv:
Du kan også bruge SetValue metode i et array til at ændre en værdi. Denfølgende eksempel ændringer den anden værdi (indeks position 1) af $a
arrayto 500:
Du kan bruge +=
operatør for at tilføje et element til et array. Følgende eksempel viser, hvordan du tilføjer et element til $a
array.,
Bemærk!
Når du bruger +=
operatør, PowerShell faktisk skaber en ny arraywith værdierne af den oprindelige array, og merværdi. Dette kan forårsage problemer med ydeevnen, hvis operationen gentages flere gange ellerstørrelsen af arrayet er for stor.
det er ikke let at slette elementer fra en Matri., men du kan oprette en ne .array, der kun indeholder udvalgte elementer i en eksisterende Matri.., For eksempel,til at oprette $t
array med alle elementer i $a
array bortset fra thevalue på indekset position 2, skal du skrive:
for At kombinere to arrays i et enkelt array, skal du bruge plus-operator (+
). Det følgende eksempel opretter to arrays, kombinerer dem, og viser derefter resultatet kombineret array.
som et resultat indeholder $z
array 1, 3, 5 og 9.,
for at slette et array skal du tildele en værdi på $null
til arrayet. Følgende kommando sletter arrayet i variablen$a
.
$a = $null
Du kan også bruge Remove-Item
cmdlet, men tildeling af en værdi af $null
isfaster, især for store arrays.
Arrays af nul eller en
Start i Windows PowerShell 3.0, en samling af nul eller et objekt hasthe Tæller og Længde ejendom. Du kan også indeksere i en række af enobjekt., Denne funktion hjælper dig med at undgå scripting fejl, der opstår, når acommand, der forventer en samling får færre end to elementer.de følgende eksempler viser denne funktion.
Nul genstande
Et objekt
Indeksering støtte til Systemet.Tuple-objekter
Po .ershell 6.1 tilføjede understøttelsen til indekseret adgang til Tuple-objekter, svarende til arrays.,For eksempel:
i modsætning til arrays og andre samlingsobjekter behandles Tuple-objekter som asingle-objekt, når de passeres gennem rørledningen eller ved parametre, der understøtter objekter af objekter.
For mere information, se System.Tupel.
Se også
- about_Assignment_Operators
- about_Hash_Tables
- about_Operators
- about_For
- about_Foreach
- about_While