ScriptForge.Array service (SF_Array)

Indhold
Indholdsfortegnelse 🔎︎

# ScriptForge.Array-tjeneste

Leverer en samling af metoder til at manipulere og transformere matrixer i en dimension (vektorer) og matrixer i to dimensioner (matrixer). De indeholder sæt-operationer, sortering, import til og eksport fra tekstfiler.

Matrixer med mere end to dimensioner kan ikke bruges med metoderne i denne tjeneste; den eneste udtagelse er metoden CountDims, der accepterer matrixer med et vilkårligt antal dimensioner.

Matrix-elementer kan indeholde enhver type værdi, herunder (under)matrixer.

## Kald af tjeneste

Før brug af tjenesten Array er det nødvendigt at hente biblioteket ScriptForge ved hjælp af:

          GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")

Indlæsning af biblioteket vil oprette objektet SF_Array, der kan bruges til at kalde metoderne i tjenesten Array-

De følgende kodestumper viser de forskellige måder at kalde metoder i tjenesten Array på (metoden Append bruges som eksempel):

          SF_Array.Append(...)

          Dim arr    :    arr = SF_Array
          arr.Append(...)

          Dim arr    :    arr = CreateScriptService("Array")
          arr.Append(...)

Metoden CreateScriptService er først tilgængeligt, efter at du har hentet biblioteket CreateScriptService.

Metoder
Append AppendColumn AppendRow Contains ConvertToDictionary CountDims Difference ExportToTextFile ExtractColumn ExtractRow | Flatten ImportFromCSVFile IndexOf Insert InsertSorted Intersection Join2D Prepend PrependColumn PrependRow | RangeInit Reverse Shuffle Slice Sort SortColumns SortRows Transpose TrimArray Union Unique

Det første argument i de fleste motoder er det matrix-objekt, der skal behandles. Det overleveres altid ved reference og lades uændret. Metoder som for eksempel Append, Prepend osv. returnerer et nyt matrix efter deres udførelse.

## Append

Tilføjer de oplistede elementer som argumenter i slutningen af input-matrixen.

### Syntaks:

          SF_Array.Append(Array_1D As Variant, arg0 As Variant, [arg1 As Variant], ...) As Variant

### Parametre:

Array_1D : det forudeksisterende matrix, kan være tomt.

arg0, ... : en liste over elementer, der skal tilføjes Array_1D.

### Eksempel:

          Sub Example_Append()
          Dim a As Variant
              a = SF_Array.Append(Array(1, 2, 3), 4, 5)
                  ' (1, 2, 3, 4, 5)
          End Sub

## AppendColumn

Tilføjer en ny kolonne på højre side i et to-dimensionelt matrix. De resulterende matrix har de samme nedre grænser som det oprindelige to-dimensionelle matrix.

### Syntaks:

          SF_Array.AppendColumn(Array_2D As Variant, New_Column As Variant) As Variant

### Parametre:

Matrix_2D : det forudeksisterende matrix, kan være tomt. Hvis dette matrix kun har en dimension, betragtes det som den første kolonne i det resulterende to-dimensionelle matrix.

Ny_Kolonne : en en-dimensionel matrix med lige så mange elementer, som der er rækker i Array_2D.

### Eksempel:

          Sub Example_AppendColumn()
          Dim a As Variant, b As variant
              a = SF_Array.AppendColumn(Array(1, 2, 3), Array(4, 5, 6))
                  ' ((1, 4), (2, 5), (3, 6))
              b = SF_Array.AppendColumn(a, Array(7, 8, 9))
                  ' ((1, 4, 7), (2, 5, 8), (3, 6, 9))
              c = SF_Array.AppendColumn(Array(), Array(1, 2, 3))
                  ' ∀ i ∈ {0 ≤ i ≤ 2} : b(0, i) ≡ i
          End Sub

## AppendRow

Tilføj en ny række nederst nederst i en to-dimensionel matrix. Den resulterende matrix har de samme nedre grænser som den oprindelige to-dimensionelle matrix.

### Syntaks:

          SF_Array.AppendRow(Array_2D As Variant, Row As Variant) As Variant

### Parametre:

Matrix_2D : den forudeksisterende matrix, kan være tom. Hvis denne matrix har en dimension, betragtes denne som den første række af den af den resulterende to-dimensionelle matrix.

Række : en en-dimensionel matrix med lige så mange elementer, som der der kolonner i Matrix_2D.

### Eksempel:

          Sub Example_AppendRow()
          Dim a As Variant, b As variant
              a = SF_Array.AppendRow(Array(1, 2, 3), Array(4, 5, 6))
                  '  ((1, 2, 3), (4, 5, 6))
              b = SF_Array..AppendRow(Array(), Array(1, 2, 3))
                  ' ∀ i ∈ {0 ≤ i ≤ 2} : b(i, 0) ≡ i
          End Sub

## Contains

Tjek, om en endimensionel matrix indeholder et bestemt tal, tekst eller dato. Tekstsammenligningen kan skelne mellem Store og små bogstaver eller ikke.
Sorteret input-matrixer skal udfyldes homogent; det vil sige, at alle elementer skal være skalarer af den samme type (Tomme og Null-elementer er forbudt).
Metodens resultat er uforudsigelig, når matrixen annonceres som sorteret og faktisk ikke er det.
Der udføres en søgning, når matrixen er sorteret, ellers bliver den simpelthen skannet fra top til bund og elementerne Tom og Null ignoreres.

### Syntaks:

          SF_Array.Contains(Array_1D, ToFind As Variant, [CaseSensitive As Boolean], [SortOrder As String]) As Boolean

### Parametre:

Matrix_1D: den matrix, der skal scannes,

AtFinde: et tal, en dato eller en streng, der skal findes.

Skelner mellem Stort og småt: Kun til strengsammenligning, standard = Falsk.

Sorteringsrækkefølge: "ASC", "DESC" eller "" (= ikke sorteret, standard)

### Eksempel:

          Sub Example_Contains()
          Dim a As Variant
              a = SF_Array.Contains(Array("A","B","c","D"), "C", SortOrder := "ASC") ' True
              SF_Array.Contains(Array("A","B","c","D"), "C", CaseSensitive := True) ' False
          End Sub

## ConvertToDictionary

Gem indholdet af en to-kolonners matrix i et ScriptForge.Dictionary-objekt.
Nøglen bliver trukket ud af den første kolonne, elementet fra den anden.

### Syntaks:

          SF_Array.ConvertToDictionary(Array_2D As Variant) As Variant

### Parametre:

Matrix_1D: den første kolonne må udelukkende indeholde strenge med en længde > 0 i vilkårlig orden.

### Eksempel:

          Sub Example_ConvertToDictionary()
          Dim a As Variant, b As Variant
              a = SF_Array.AppendColumn(Array("a", "b", "c"), Array(1, 2, 3))
              b = SF_Array.ConvertToDictionary(a)
              MsgBox b.Item("c") ' 3
          End Sub

## CountDims

Tæl antallet af dimensioner i en matrix. Resultatet kan være større end to.
Hvis argumentet ikke er en matrix, returneres -1
Hvis matrixen ikke er initialiseret, returnes 0.

### Syntaks:

          SF_Array.CountDims(Array_ND As Variant) As Integer

### Parametre:

Matrix_ND: den matrix, der skal undersøges.

### Eksempel:

          Sub Example_CountDims()
          Dim a(1 To 10, -3 To 12, 5)
              MsgBox SF_Array.CountDims(a) ' 3
          End Sub

## Difference

Byg et sæt, som en nul-baseret matrix ved at anvende differens-operatoren på de to input-matrixer. Resulterende elementer stammer fra den første matrix og ikke fra den anden.
Den resultende matrix er sortetet i stigende rækkefølge.
Begge input-matrixer skal være fyldt homogent, deres elementer skal være skalarer af den samme type. Tomme og Null-elemnter er forbudt.
Tekstsammenligning kan skelne mellem Store og små bogstaver eller ikke.

### Syntaks:

          SF_Array.Difference(Array1_1D As Variant, Array2_1D As Variant[, CaseSensitive As Boolean]) As Variant

### Parametre:

Matrix1_1D: En endimensionel reference-matrix, hvis elementer undersøges for fjernelse.

Matrix2_1D: En endimensionel matrix, hvis elementer fratrækkes den første input-matrix.

Store/små bogstaver: Kun hvis matrixen er fyldt med strenge, default = Falsk.

### Eksempel:

          Sub Example_Difference()
          Dim a As Variant
              a = SF_Array.Difference(Array("A", "C", "A", "b", "B"), Array("C", "Z", "b"), True)
                  ' ("A", "B")
          End Sub

## ExportToTextFile

Skriv alle matrixens elementer i nummerrækkefølge til en tekstfil. Hvis filen allerede eksisterer, bliver den overskrevet uden varsel.

### Syntaks:

          SF_Array.ExportToTextFile(Array_1D As Variant, FileName As String, [Encoding As String]) As Boolean

### Parametre:

Matrix_1D: Matrixen, der skal eksporteres. Den må kun indeholde strenge.

Filnavn: navnet på den tekstfil, der indeholder dataene. Navnet udtrykkes som det er givet af den aktuelle Filnavngivelses-egenskab i tjenesten SF_FileSystem. Standard = any (både URL-formatet og det medfødte operativsystem format tillades).

Tegnsæt: Det tegnsæt. der burde bruges. Brug et af navnene oplistet i tensættene IANA. Bemærk, at LibreOffice måske ikke implementerer alle eksisterende tegnsæt. Standard er "UTF-8".

### Eksempel:

          Sub Example_ExportToTextFile()
              SF_Array.ExportToTextFile(Array("A","B","C","D"), "C:\Temp\A short file.txt")
          End Sub

## ExtractColumn

Udtræk en bestemt kolonne som en ny matrix fra en todimensionel matrix.
Dens nedre LBound og øvre UBound grænser er identiske med dem fra input-matrixens første dimension.

### Syntaks:

          SF_Array.ExtractColumn(Array_2D As Variant, ColumnIndex As Long) As Variant

### Parametre:

Array_2D (Matrix_2D): Den matrix, der skal udtrækkes fra.

ColumnIndex (Kolonneindeks): Det kolonnenummer der udtrækkes - skal være i intervallet [LBound, UBound] (NedreGrænse, ØvreGrænse).

### Eksempel:

          Sub Example_ExtractColumn
             'Opretter en 3x3 matrix: |1, 2, 3|
             '                      |4, 5, 6|
             '                      |7, 8, 9|
             Dim mat as Variant, col as Variant
             mat = SF_Array.AppendRow(Array(), Array(1, 2, 3))
             mat = SF_Array.AppendRow(mat, Array(4, 5, 6))
             mat = SF_Array.AppendRow(mat, Array(7, 8, 9))
             'Udtrækker den tredje kolonne: |3, 6, 9|
             col = SF_Array.ExtractColumn(mat, 2)
          End Sub

## ExtractRow

Udtræk en bestemt række som en ny mqtrix fra en to-dimensionel matrix.
Dens nedre LBound og øvre UBound grænser er identiske med dem i den anden dimension i input-matrixen.

### Syntaks:

          SF_Array.ExtractRow(Array_2D As Variant, RowIndex As Long) As Variant

### Parametre:

Array_2D (Matrix_2D): Den matrix, der skal udtrækkes fra.

RowIndex (Rækkeindeks): Den række, der skal udtrækkes - skal være i intervallet [LBound, UBound].

### Eksempel:

          Sub Example_ExtractRow
             'Opretter en 3x3 matrix: |1, 2, 3|
             '                      |4, 5, 6|
             '                      |7, 8, 9|
             Dim mat as Variant, row as Variant
             mat = SF_Array.AppendRow(Array(), Array(1, 2, 3))
             mat = SF_Array.AppendRow(mat, Array(4, 5, 6))
             mat = SF_Array.AppendRow(mat, Array(7, 8, 9))
             'Udtrækker den første række: |1, 2, 3|
             row = SF_Array.ExtractRow(mat, 0)
          End Sub

## Flatten

Stak alle enkelte elementer i et matrix og alle elemter i det undermatrixer ind i et nyt matrix uden undermatrixer. Tomme undermatrixer ignoreres og undermatrixer med et større antal dimensioner end en udflades ikke.

### Syntaks:

          SF_Array.Flatten(Array_1D As Variant) As Variant

### Parametre:

Matrix_1D: den forud-eksisterende matrix, kan være tom.

### Eksempel:

          Sub Example_Flatten()
          Dim a As Variant
              a = SF_Array.Flatten(Array(Array(1, 2, 3), 4, 5))
                  ' (1, 2, 3, 4, 5)
          End Sub

Du kan bruge metoden Flatten sammen med andre metoder som for eksempel Append eller Prepend til at sammenkæde et sæt af 1D-matrixer til et enkelt 1D-matrixer.

### Eksempel:

Herefter er der et eksempel på, hvordan metoderne Flatten og Append kan kombineres til at sammenkæde tre matrixer.

          Sub Concatenate_Example
             'Opretter tre matrixer til dette eksempel
             Dim a as Variant, b as Variant, c as Variant
             a = Array(1, 2, 3)
             b = Array(4, 5)
             c = Array(6, 7, 8, 9)
             'Sammenkæder de tre matrixer til en enkelt 1D-matrix
             Dim arr as Variant
             arr = SF_Array.Flatten(SF_Array.Append(a, b, c))
             '(1, 2, 3, 4, 5, 6, 7, 8, 9)
          End Sub

## ImportFromCSVFile

Importer de data, der er indeholdt i en komma-separeret værdi-fil (CSV). Kommaet kan være erstattet af et vilkårligt tegn.

Det anvendelige CSV-format er beskrevet i IETF Common Format and MIME Type for CSV Files.

Hver linje i filen indeholder en komplet post (linjeopdeling er ikke tilladt).
Sekvenser som \n, \t ... efterrlades imidlertid uændrede. Brug metoden SF_String.Unescape() til at håndtere dem.

Metoden returnerer en to-dimensionel matrix, hvis rækker svarer til en enkelt post læst i filen og hvis kolonner svaret til et felt i posten. Der udføres ingen tjek af felttypernes sammenhæng på tværs af kolonner. Der gøres et bedste gæt på at identificere numeriske og dato-typer.

Hvis en linje indeholder færre eller flere felter en den første linje i filen, sættes et undtagelsesflag og matrixen afkortes. Hvis filstørrelsen overstiger grænsen for antallet af elementer (se inde i koden), skrives en advarsel og matrixen afkortes.

### Syntaks:

          SF_Array.ImportFromCSVFile(FileName As String, [Delimiter As String], [DateFormat As String]) As Variant

### Parametre:

Filnavn: navnet på tekstfilen, der indeholder dataene. Navnet udtrykkes som angivet af den aktuelle egenskab FileNaming i tjenesten SF_FileSystem. Standarden = vilkårlig (både URL-formatet og det operativsystemets eget format tillades).

Delimiter: Et enkelt tegn, sædvanligvis et komma, et semikolon eller et tabulatortegn. Standard = ",".

Datoformat: En særlig mekanisme håndterer datoer, når DateFormat er enten "YYYY-MM-DD", "DD-MM-YYYY" eller "MM-DD-YYYY". bindestregen (-) kan være erstattet af et punktum (.), en skråstreg (/) eller et mellemrum. Andre datoformater ignoreres. Datoer, der falder tilbage til "" anses som almindelig tekst.

### Eksempel:

Givet denne CSV-fil

          Name,DateOfBirth,Address,City
          Anna,2002/03/31,"Rue de l'église, 21",Toulouse
          Fred,1998/05/04,"Rue Albert Einstein, 113A",Carcassonne

          Sub Example_ImportFromCSVFile()
          Dim a As Variant
              a = SF_Array.ImportFromCSVFile("C:\Temp\myFile.csv", DateFormat := "YYYY/MM/DD")
              MsgBox a(0, 3)    ' City
              MsgBox TypeName(a(1, 2))    ' Date
              MsgBox a(2, 2)    ' Rue Albert Einstein, 113A
          End Sub

## IndexOf

Se i en endimensionel matrix efter et tal, en streng eller en dato. Tekstsammenligning kan skelne mellem Store og små bogstaver eller ej.
Hvis matrixen er sorteret, skal den være homogent fyldt, hvilket betyder, at alle elementer skal være skalarer af den samme type (elementerne Empty og Null er ikke tilladt).
Resultatet af metoden er uforudsigeligt, når matrixen annonceres som sorteret og faktisk ikke er det.
En binær søgning foretages på sorterede matrixer. Ellers scannes matrixer fra top til bund og elementerne Empty og Null ignorereres.
Metoden returnerer LBound(input array) -1, hvis søgningen ikke lykkedes.

### Syntaks:

          SF_Array.IndexOf(Array_1D, ToFind As Variant, [CaseSensitive As Boolean], [SortOrder As String]) As Long

### Parametre:

Matrix_1D: den matrix, der skal scannes.

Skalfindes: et tal, en dato eller en streng, der skal findes.

Stort/småt: Kun til strengsammenligninger, standard = False.

Sorteringsrækkefølge: "ASC", "DESC" eller "" (= ikke sorteret, standard)

### Eksempel:

          Sub Example_IndexOf()
              MsgBox SF_Array.IndexOf(Array("A","B","c","D"), "C", SortOrder := "ASC") ' 2
              MsgBox SF_Array.IndexOf(Array("A","B","c","D"), "C", CaseSensitive := True) ' -1
          End Sub

## Insert

Indsæt de elementer, der er oplistet som argumenter, foran et givet indeks i input-matrixen.
Argumenter indsættes blindt. Hver af dem kan være enten en skalar af vilkårlig type eller en undermatrix.

### Syntaks:

          SF_Array.Insert(Array_1D As Variant, Before As Long, arg0 As Variant, [arg1 As Variant], ...) As Variant

### Parametre:

Matrix_1D: den forudeksisterende matrix, kan være tom.

Foran: indekset, foran hvilket, der skal indsættes; skal være i intervallet [LBound, UBound + 1].

arg0, ...: en liste over elementer, der skal indsættes i Array_1D.

### Eksempel:

          Sub Example_Insert()
          Dim a As Variant
              a = SF_Array.Insert(Array(1, 2, 3), 2, "a", "b")
                  ' (1, 2, "a", "b", 3)
          End Sub

## InsertSorted

Indsæt et nyt element på sin plads i et sorteret matrix.
Matrixen skal være fyldt homogent, det vil sige, at at alle elementer skal være skalarer af den samme type.
Elementerne Empty og Null er ikke tilladt.

### Syntaks:

          SF_Array.InsertSorted(Array_1D As Variant, Item As Variant, SortOrder As String, CaseSensitive As Boolean) As Variant

### Parametre:

Matrix_1D: Matrixen, der skal sorteres.

Element: Den skalar, der skal indsættes, af samme type som de eksisterende matrix-elementer.

Sorteringsrækkefølge: "ASC" (standard) eller "DESC".

Stort/småt: Kun til strengsammenligninger, standard = False.

### Eksempel:

          Sub Example_InsertSorted()
          Dim a As Variant
              a = SF_Array.InsertSorted(Array("A", "C", "a", "b"), "B", CaseSensitive := True)
                  ' ("A", "B", "C", "a", "b")
          End Sub

## Intersection

Byg et sæt som en nul-baseret matrix ved at anvende operatoren fællesmængde på de to inputmatrixer. Resulterende elementer er indeholdt i begge matrixer.
Den resulterende matrix sorteres i stigende rækkefølge.
Begge input-matrixer skal være homogent fyldt, med andre ord skal alle elementer være skalarer af den samme type. Elementerne Empty og Null er ikke tilladt.
Tekstsammenligning kan skelne med Store og små bogstaver eller ej.

### Syntaks:

          SF_Array.Intersection(Array1_1D As Variant, Array2_1D As Variant[, CaseSensitive As Boolean]) As Variant

### Parametre:

Array1_1D (Matrix_1D): Den første input-matrix.

Matrix2_1D: Den anden input-matrix.

Stort/småt: Gælder matrixer der befolket med tekstelementer, standard = False.

### Eksempel:

          Sub Example_Intersection()
          Dim a As Variant
              a = SF_Array.Intersection(Array("A", "C", "A", "b", "B"), Array("C", "Z", "b"), True)
                  ' ("C", "b")
          End Sub

## Join2D

Sammenføj en todimensionel matrix med to skilletegn, en for kolonnerne. en for rækkerne.

### Syntaks:

          SF_Array.Join2D(Array_2D As Variant, ColumnDelimiter As String, RowDelimiter As String, Quote As Boolean) As String

### Parametre:

Matrix_2D: Hvert element skal være enten tekst, et tal, en dato eller en boolsk værdi.
Datoer transformeres til YYYY-MM-DD hh:mm:ss format.
Ugyldige elementer erstattes af strenge med nul-længde.

Kolonneskilletegn: Adskiller hver kolonne (standard = Tab/Chr(9)).

Rækkeskilletegn: adskiller hver række (standard = LineFeed/Chr(10))

Anførselstegn: hvis True, beskytter du strengene med dobbelte anførselstegn. Standarden er False.

### Eksempel:

          Sub Example_Join2D()
          -                     | 1, 2, "A", [2020-02-29], 5      |
          -    SF_Array.Join_2D(| 6, 7, "this is a string", 9, 10 |, ",", "/")
          -            ' "1,2,A,2020-02-29 00:00:00,5/6,7,this is a string,9,10"
          End Sub

## Prepend

Tilføj de oplistede elementer som argumenter i begyndelsen af input-matrixen

### Syntaks:

          SF_Array.Prepend(Array_1D As Variant, arg0 As Variant, [arg1 As Variant], ...) As Variant

### Parametre:

Matrix_1D: den forudeksisterende matrix; kan være tom.

arg0, ...: en liste over elementer, der skal indsættes først i Matrix_1D.

### Eksempel:

          Sub Example_Prepend()
          Dim a As Variant
              a = SF_Array.Prepend(Array(1, 2, 3), 4, 5)
                  ' (4, 5, 1, 2, 3)
          End Sub

## PrependColumn

Indføj en ny kolonne forrest i den venstre side af en to-dimensionel matrix. Den resulterende matrix har de samme nedre grænser som den oprindelige todimensionelle matrix.

### Syntaks:

          SF_Array.PrependColumn(Array_2D As Variant, Column As Variant) As Variant

### Parametre:

Matrix_2D: den forudeksisterende matrix, kan være tom. Hvis den matrix har en dimension, betragtes den som den sidste kolonne i den resulterende todimensionelle matrix.

Kolonne: en en-dimensionwl matrix med lige så mange elementer, som der er rækker i Matrix_2D.

### Eksempel:

          Sub Example_PrependColumn()
          Dim a As Variant, b As variant
              a = SF_Array.PrependColumn(Array(1, 2, 3), Array(4, 5, 6))
                  ' ((4, 1), (5, 2), (6, 3))
              b = SF_Array.PrependColumn(Array(), Array(1, 2, 3))
                  ' ∀ i ∈ {0 ≤ i ≤ 2} : b(0, i) ≡ i
          End Sub

## PrependRow

Indføj en ny række i begyndelsen af en todimensionel matrix. Den resulterende matrix har samme nedre grænser som den oprindelige todimensionelle matrix.

### Syntaks:

          SF_Array.PrependRow(Array_2D As Variant, Row As Variant) As Variant

### Parametre:

Matrix_2D: den forudeksisterende matrix; kan være tom. Hvis denne matrix har en dimension, betragtes den som den sidste række i den todimensionelle matrix.

Række : en endimensionel matrix, der indeholder lige så mange elementer, som der er rækker i Matrix_2D.

### Eksempel:

          Sub Example_PrependRow()
          Dim a As Variant, b As variant
              a = SF_Array.PrependRow(Array(1, 2, 3), Array(4, 5, 6))
                  ' ((4, 5, 6), (1, 2, 3))
              b = SF_Array.PrependRow(Array(), Array(1, 2, 3))
                  ' ∀ i ∈ {0 ≤ i ≤ 2} : b(i, 0) ≡ i
          End Sub

## RangeInit

Initialiser en ny nul-baseret matrix med numeriske værdier.

### Syntaks:

          SF_Array.RangeInit(From As [number], UpTo As [number] [, ByStep As [number]]) As Variant

### Parametre:

Fra: værdien af det første element.

Optil: Det sidste element bør ikke overstige UpTo.

Trinvis: Differencen mellem to på hinanden følgende elementer (standard = 1).

### Eksempel:

          Sub Example_RangeInit()
          Dim a As Variant
              a = SF_Array.RangeInit(10, 1, -1)
                  ' (10, 9, 8, 7, 6, 5, 4, 3, 2, 1)
          End Sub

## Reverse

Returner den omvendte endimensionelle input-matrix.

### Syntaks:

          SF_Array.Reverse(Array_1D As Variant) As Variant

### Parametre:

Matrix_1D: Den matrix, der skal vendes.

### Eksempel:

          Sub Example_Reverse()
          Dim a As Variant
              a = SF_Array.Reverse(Array("a", 2, 3, 4))
                  ' (4, 3, 2, "a")
          End Sub

## Shuffle

Returner en vilkår permutation af en endimensionel matrix.

### Syntaks:

          SF_Array.Shuffle(Array_1D As Variant) As Variant

### Parametre:

Matrix_1D: Den matrix, der skal blandes.

### Eksempel:

          Sub Example_Shuffle()
          Dim a As Variant
              a = SF_Array.Shuffle(Array(1, 2, 3, 4))
                  ' Uforudsigelig
          End Sub

## Slice

Returner et undersæt af en endimensionel matrix.

### Syntaks:

          SF_Array.Slice(Array_1D As Variant, From As Long, [UpTo As Long]) As Variant

### Parametre:

Matrix_1D: Den matrix, der skal skæres ud.

Fra: Det laveste indeks i Array_1D af den delmatrix, der skal udtrækkes (From medtaget)

Optil : Det øverste indeks i Array_1D af den delmatrix, der skal udtrækkes (UpTo medtaget). Standard = Array_1Ds øvre grænse. Hvis UpTo < From er den returnerede matrix tom.

### Eksempel:

          Sub Example_Slice()
          Dim a As Variant
              a = SF_Array.Slice(Array(1, 2, 3, 4, 5), 1, 3) ' (2, 3, 4)
          End Sub

## Sort

Sorter en endimensionel matrix i stigende eller faldende rækkefølge. Tekstsammenligninger kan skelne mellem Store og små bogstaver eller ikke.
Matrixen skal være homogent fyldt, hvilket betyder, at elementerne skal være dem samme type skalarer.
Elementerne Empty og Null er tilladt. Traditionelt er Empty < Null < enhver anden skalar værdi.

### Syntaks:

          SF_Array.Sort(Array_1D As Variant, SortOrder As String, CaseSensitive As Boolean) As Variant

### Parametre:

Matrix_1D: Den matrix, der skal sorteres.

Sorteringsrækkefølge: "ASC" (standard) eller "DESC".

CaseSensitive: Kun til strengsammenligninger, standard = False.

### Eksempel:

          Sub Example_Sort()
          Dim a As Variant
              a = SF_Array.Sort(Array("a", "A", "b", "B", "C"), CaseSensitive := True)
                  ' ("A", "B", "C", "a", "b")
          End Sub

## SortColumns

Returner en permutation af kolonner i en todimensionel matrix, sorteret efter værdierne i en given række.
Rækken skal være homogent fyldt, det vil sige, at alle elementer skal være skalarer af den samme type. Elementerne
Empty og Null er tilladte. Traditionelt er Empty < Null < enhver anden skalar værdi..

### Syntaks:

          SF_Array.SortColumns(Array_1D As Variant, RowIndex As Long, SortOrder As String, CaseSensitive As Boolean) As Variant

### Parametre:

Matrix_1D: Den matrix, der skal sorteres.

Rækkeindeks: Den rækkes indeks, som kolonnerne skal sorteres efter.

Sorteringsrækkefølge : "ASC" (standard) eller "DESC".

Stort/småt: Kun til strengsammenligninger, standard = False.

### Eksempel:

          Sub Example_SortColumns()
          -                         | 5, 7, 3 |            ' | 7, 5, 3 |
          -    SF_Array.SortColumns(| 1, 9, 5 |, 2, "ASC") ' | 9, 1, 5 |
          -                         | 6, 1, 8 |            ' | 1, 6, 8 |
          End Sub

## SortRows

Returner en permutation af rækker i en todimensionel matrix, sorteret efter værdierne i en given kolonne.
kolonnen skal være homogent fyldt, derfor skal alle elementer være skalarer af den samme type.
Elementerne Empty og Null er tilladt, Traditionelt er Empty < Null < enhver anden skalar værdi.

### Syntaks:

          SF_Array.SortRows(Array_1D As Variant, ColumnIndex As Long, SortOrder As String, CaseSensitive As Boolean) As Variant

### Parametre:

Matrix_1D: Den matrix, der skal sorteres.

Rækkeindeks : indekset for den kolonne, hvis rækker skal sorteres.

Sorteringsrækkefølge: "ASC" (standard) eller "DESC".

Stort/småt: Kun til strengsammenligninger, standard = False.

### Eksempel:

          Sub Example_SortRows()
          -                      | 5, 7, 3 |            ' | 1, 9, 5 |
          -    SF_Array.SortRows(| 1, 9, 5 |, 2, "ASC") ' | 5, 7, 3 |
          -                      | 6, 1, 8 |            ' | 6, 1, 8 |
          End Sub

## Transpose

Ombyt rækker og kolonner i en todimensionel matrix.

### Syntaks:

          SF_Array.Transpose(Array_2D As Variant) As Variant

### Parametre:

Matrix_2D: Den matrix, der skal transponeres.

### Eksempel:

          Sub Example_Transpose()
          -                       | 1, 2 |  ' | 1, 3, 5 |
          -    SF_Array.Transpose(| 3, 4 |) ' | 2, 4, 6 |
          -                       | 5, 6 |
          End Sub

## TrimArray

Fjern alle Null, Empty og nul-længde-indførsler fra en endimensionel matrix.
Strengelementer trimmes med funktionen LibreOffice Basic Trim() .

### Syntaks:

          SF_Array.TrimArray(Array_1D As Variant) As Variant

### Parametre:

Matrix_1D : Den matrix, der skal scannes.

### Eksempel:

          Sub Example_TrimArray()
          Dim a As Variant
              a = SF_Array.TrimArray(Array("A","B",Null," D "))
                  ' ("A","B","D")
          End Sub

## Union

Byg et sæt som en nul-baseret matrix ved at anvende operatoren unionsmængde på de to input-matrixer. Resulterende elementer stammer fra begge matrixer.
Det resulterende matrix er sorteret i stigende rækkefølge.
Begge input-matrixer skal være homogent fyldt, deres elementer skal være skalarer af den samme type. Elementerne Empty og Null er ikke tilladte.
Tekstsammenligning kan skelne mellem Store og sSmå bogstaver eller ikke.

### Syntaks:

          SF_Array.Union(Array1_1D As Variant, Array2_1D As Variant[, CaseSensitive As Boolean]) As Variant

### Parametre:

Matrix1_1D : den første input-matrix.

Matrix2_1D : Den anden input-matrix.

Stort/småt: Kun hvis matrixerne er fyldt med strenge, standard = False.

### Eksempel:

          Sub Example_Union()
          Dim a As Variant
              a = SF_Array.Union(Array("A", "C", "A", "b", "B"), Array("C", "Z", "b"), True)
                  ' ("A", "B", "C", "Z", "b")
          End Sub

## Unique

Byg et sæt af unikke værdier, afledt fra input-matrixet.
Input-matrixen skal være homogent fyldt, dets elementer sskal være skalarer af den samme type. Elementerne Empty og Null er ikke tilladt.
Tekstsammenligninger kan skelne mellem Store bogstaver og små eller ikke.

### Syntaks:

          SF_Array.Unique(Array_1D As Variant, CaseSensitive As Boolean]) As Variant

### Parametre:

Matrix_1D: Input-matrixen.

Stort/småt: Kun hvis matrixen er befolket med tekster, standard = False.

### Eksempel:

          Sub Example_Unique()
          Dim a As Variant
              a = SF_Array.Unique(Array("A", "C", "A", "b", "B"), CaseSensitive := True)
                  '  ("A", "B", "C", "b")
          End Sub

Alle ScriptForge Basic-rutiner eller identifikatorer, som indledes med et understregningstegn "_" er reserveret til internt brug. De er ikke beregnet til brug i Basic-makroer.

Relaterede emner

Matrice-funktioner

Kald af Calc-funktioner

Tjenesten ScriptForge.Ordbog