ScriptForge.Array servis (SF_Array)

Isi
Indeks 🔎︎

# ScriptForge.Layanan larik

Menyediakan kumpulan metode untuk memanipulasi dan mengubah larik satu dimensi (vektor) dan larik dua dimensi (matriks). Ini termasuk mengatur operasi, menyortir, mengimpor dari dan mengekspor ke berkas teks.

Larik dengan lebih dari dua dimensi tidak dapat digunakan dengan metode dalam layanan ini, satu-satunya pengecualian adalah metode CountDims yang menerima Larik dengan sejumlah dimensi.

Item larik dapat berisi semua jenis nilai, termasuk (sub)larik.

## Panggilan layanan

Sebelum menggunakan layanan Larik, pustaka ScriptForge perlu dimuat menggunakan:

        GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

Memuat pustaka akan membuat objek SF_Array yang dapat digunakan untuk memanggil metode dalam layanan Array.

Cuplikan kode berikut menunjukkan berbagai cara untuk memanggil metode dalam layanan Array (metode Append digunakan sebagai contoh):

        Dim arr : arr = Array(1, 2, 3)
        arr = SF_Array.Append(arr, 4)

        Dim arr : arr = Array(1, 2, 3)
        Dim svc : svc = SF_Array
        arr = svc.Append(arr, 4)

        Dim arr : arr = Array(1, 2, 3)
        Dim svc : svc = CreateScriptService("Array")
        arr = svc.Append(arr, 4)

Karena Python memiliki daftar bawaan dan dukungan tuple, sebagian besar metode dalam layanan Array hanya tersedia untuk skrip Basic. Satu-satunya pengecualian adalah ImportFromCSVFile yang didukung di Basic dan Python.

Daftar Metode dalam Layanan Array
Append AppendColumn AppendRow Contains ConvertToDictionary Copy 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

Argumen pertama dari sebagian besar metode adalah objek larik yang harus dipertimbangkan. Itu selalu diteruskan dengan referensi dan dibiarkan tidak berubah. Metode seperti Append, Prepend, dll mengembalikan objek larik baru setelah eksekusinya.

## Append

Menambahkan item yang terdaftar sebagai argumen ke akhir input larik.

### Sintaksis:

svc.Append(array_1d: any[0..*], arg0: any, [arg1: any] ...): any[0..*]

### Parameter:

array_1d: Larik yang sudah ada sebelumnya, mungkin kosong.

arg0, arg1, ...: Item yang akan ditambahkan ke array_1d.

### Contoh:

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

## AppendColumn

Menambahkan kolom baru ke sisi kanan larik dua dimensi. Larik yang dihasilkan memiliki batas bawah yang sama dengan larik dua dimensi awal.

### Sintaksis:

svc.AppendColumn(array_2d: any[0..*, 0..*], column: any[0..*]): any[0..*, 0..*]

### Parameter:

array_2d: larik yang sudah ada sebelumnya, mungkin kosong. Jika larik itu hanya memiliki satu dimensi, itu dianggap sebagai kolom pertama dari larik dua dimensi yang dihasilkan.

column: Larik 1 dimensi dengan item sebanyak baris dalam array_2d.

### Contoh:

        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

## AppendRow

Tambahkan sebuah baris baru di bagian bawah larik dua dimensi. Array yang dihasilkan memiliki batas bawah yang sama dengan array dua dimensi awal.

### Sintaksis:

svc.AppendRow(array_2d: any[0..*, 0..*], row: any[0..*]): any[0..*, 0..*])

### Parameter:

array_2d: Larik yang sudah ada sebelumnya, mungkin kosong. Jika larik tersebut memiliki 1 dimensi, maka larik tersebut dianggap sebagai baris pertama dari larik 2 dimensi yang dihasilkan.

row: Larik 1 dimensi dengan item sebanyak kolom dalam array_2d.

### Contoh:

        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

## Contains

Periksa apakah larik satu dimensi berisi nomor, teks, atau tanggal. Perbandingan teks bisa peka huruf besar-kecil atau tidak.
Larik masukan yang diurutkan harus diisi secara homogen, artinya semua item harus skalar dari jenis yang sama (item Empty dan Null dilarang).
Hasil dari metode ini tidak dapat diprediksi ketika larik diumumkan sebagai terurut namun kenyataannya tidak.
Pencarian biner dilakukan ketika larik diurutkan, jika tidak, hanya dipindai dari atas ke bawah dan item Empty dan Null diabaikan.

### Sintaksis:

svc.Contains(array_1d: any[0..*], tofind: any, casesensitive: bool = False, sortorder: str = ""): bool

### Parameter:

array_1d: Larik untuk memindai.

tofind:Angka, tanggal, atau string untuk ditemukan.

casesensitive: Hanya untuk perbandingan string (Default = False).

sortorder: Dapat berupa "ASC", "DESC" atau "" (tidak diurutkan). Nilai defaultnya adalah "".

### Contoh:

        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

## ConvertToDictionary

Simpan konten larik 2 kolom ke dalam objek ScriptForge.Dictionary object.
Kunci akan diekstrak dari kolom pertama, item dari kolom kedua.

### Sintaksis:

svc.ConvertToDictionary(array_2d: any[0..*, 0..1]): obj

### Parameter:

array_2d: Data akan dikonversi dalam sebuah objek ScriptForge.Dictionary.

- Kolom pertama harus berisi string eksklusif dengan panjang lebih besar dari nol, dalam urutan apa pun. Nilai-nilai ini akan digunakan sebagai label dalam kamus.

- Kolom kedua berisi data yang akan dikaitkan dengan label yang sesuai dalam kamus.

### Contoh:

        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

## Copy

Membuat salinan larik 1D atau 2D.

### Sintaksis:

svc.Copy(array_nd: any[0..*]): any[0..*]

svc.Copy(array_nd: any[0..*, 0..*]): any[0..*, 0..*]

### Parameter:

array_nd: Larik 1D atau 2D yang akan disalin.

### Contoh:

Penugasan sederhana dari objek Array akan menyalin referensinya sendiri daripada membuat salinan isi objek. Lihat contoh di bawah ini:

        Dim a as Variant, b as Variant
        a = Array(1, 2, 3)
        'Tugas di bawah ini dibuat dengan referensi
        b = a
        ' Oleh karena itu mengubah nilai dalam "b" juga akan mengubah "a"
        b(0) = 10
        MsgBox a(0) ' 10

Dengan menggunakan metode Copy, salinan dari seluruh objek Array dibuat. Pada contoh di bawah, a dan b adalah objek yang berbeda dan mengubah nilai dalam b tidak akan memengaruhi nilai dalam a .

        Dim a as Variant, b as Variant
        a = Array(1, 2, 3)
        ' Membuat salinan "a" menggunakan metode "Salin"
        b = SF_Array.Copy(a)
        b(0) = 10
        MsgBox a(0) ' 1

## CountDims

Hitung jumlah dimensi array. Hasilnya bisa lebih dari dua.
Jika argumennya bukan array, mengembalikan -1
Jika array tidak diinisialisasi, mengembalikan 0.

### Sintaksis:

svc.CountDims(array_nd: any): int

### Parameter:

array_nd: Array yang akan diperiksa.

### Contoh:

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

## Difference

Build a set, as a zero-based array, by applying the difference operator on the two input arrays. Resulting items originate from the first array and not from the second.
The resulting array is sorted in ascending order.
Both input arrays must be filled homogeneously, their items must be scalars of the same type. Empty and Null items are forbidden.
Text comparison can be case sensitive or not.

### Sintaksis:

svc.Difference(array1_1d: any[0..*], array2_1d: any[0..*], casesensitive: bool = False): any[0..*]

### Parameter:

array1_1d: A 1-dimensional reference array, whose items are examined for removal.

array2_1d: A 1-dimensional array, whose items are subtracted from the first input array.

casesensitive: This argument is only applicable if the arrays are populated with strings (Default = False).

### Contoh:

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

## ExportToTextFile

Tulis semua susunan item secara berurutan ke sebuah file teks. Jika file sudah ada, itu akan ditimpa tanpa peringatan.

### Sintaksis:

svc.ExportToTextFile(array_1d: any[0..*], filename: str, [encoding: str]): bool

### Parameter:

array_1d: Susunan untuk dikeluarkan. Harus berisi hanya string.

filename: The name of the text file where the data will be written to. The name must be expressed according to the current FileNaming property of the SF_FileSystem service.

encoding: The character set that should be used. Use one of the names listed in IANA character sets. Note that LibreOffice may not implement all existing character sets (Default is "UTF-8").

### Contoh:

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

## ExtractColumn

Extract from a two dimension array a specific column as a new array.
Its lower LBound and upper UBound boundaries are identical to that of the first dimension of the input array.

### Sintaksis:

svc.ExtractColumn(array_2d: any[0..*, 0..*], columnindex: int): any[0..*, 0..*]

### Parameter:

array_2d: The array from which to extract.

columnindex: The column number to extract - must be in the interval [LBound, UBound].

### Contoh:

        'Creates a 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))
        'Extracts the third column: |3, 6, 9|
        col = SF_Array.ExtractColumn(mat, 2)

## ExtractRow

Extract from a two dimension array a specific row as a new array.
Its lower LBound and upper UBound boundaries are identical to that of the second dimension of the input array.

### Sintaksis:

svc.ExtractRow(array_2d: any[0..*, 0..*], rowindex: int): any[0..*, 0..*]

### Parameter:

array_2d: The array from which to extract.

rowindex: The row number to extract - must be in the interval [LBound, UBound].

### Contoh:

        'Creates a 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))
        'Extracts the first row: |1, 2, 3|
        row = SF_Array.ExtractRow(mat, 0)

## Flatten

Stack all single items of an array and all items in its subarrays into one new array without subarrays. Empty subarrays are ignored and subarrays with a number of dimensions greater than one are not flattened.

### Sintaksis:

svc.Flatten(array_1d: any[0..*]): any[0..*]

### Parameter:

array_1d: The pre-existing array, may be empty.

### Contoh:

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

You can use the Flatten method along with other methods such as Append or Prepend to concatenate a set of 1D arrays into a single 1D array.

### Contoh:

Next is an example of how the methods Flatten and Append can be combined to concatenate three arrays.

        'Creates three arrays for this example
        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)
        'Concatenates the three arrays into a single 1D array
        Dim arr as Variant
        arr = SF_Array.Flatten(SF_Array.Append(a, b, c))
        '(1, 2, 3, 4, 5, 6, 7, 8, 9)

## ImportFromCSVFile

Import the data contained in a comma-separated values (CSV) file. The comma may be replaced by any character.

The applicable CSV format is described in IETF Common Format and MIME Type for CSV Files.

Each line in the file contains a full record (line splitting is not allowed).
However sequences like \n, \t, ... are left unchanged. Use SF_String.Unescape() method to manage them.

The method returns a two dimension array whose rows correspond to a single record read in the file and whose columns correspond to a field of the record. No check is made about the coherence of the field types across columns. A best guess will be made to identify numeric and date types.

If a line contains less or more fields than the first line in the file, an exception will be raised. Empty lines however are simply ignored. If the size of the file exceeds the number of items limit (see inside the code), a warning is raised and the array is truncated.

### Sintaksis:

svc.ImportFromCSVFile(filename: str, delimiter: str = ',', dateformat: str = ''): any[0..*]

### Parameter:

filename: The name of the text file containing the data. The name must be expressed according to the current FileNaming property of the SF_FileSystem service.

delimiter: A single character, usually, a comma, a semicolon or a TAB character (Default = ",").

dateformat: A special mechanism handles dates when dateformat is either "YYYY-MM-DD", "DD-MM-YYYY" or "MM-DD-YYYY". The dash (-) may be replaced by a dot (.), a slash (/) or a space. Other date formats will be ignored. Dates defaulting to an empty string "" are considered as normal text.

### Contoh:

Consider the CSV file "myFile.csv" with the following contents:

Name,DateOfBirth,Address,City

Anna,2002/03/31,"Rue de l'église, 21",Toulouse

Fred,1998/05/04,"Rue Albert Einstein, 113A",Carcassonne

The examples below in Basic and Python read the contents of the CSV file into an Array object.

##### In Basic

        Dim arr As Variant
        arr = SF_Array.ImportFromCSVFile("C:\Temp\myFile.csv", DateFormat := "YYYY/MM/DD")
        MsgBox arr(0, 3) ' City
        MsgBox arr(1, 2) ' Rue de l'église, 21
        MsgBox arr(1, 3) ' Toulouse

##### In Python

        from scriptforge import CreateScriptService
        svc = CreateScriptService("Array")
        bas = CreateScriptService("Basic")
        arr = svc.ImportFromCSVFile(r"C:\Temp\myFile.csv", dateformat = "YYYY/MM/DD")
        bas.MsgBox(arr[0][3]) # City
        bas.MsgBox(arr[1][2]) # Rue de l'église, 21
        bas.MsgBox(arr[1][3]) # Toulouse

## IndexOf

Look in a one dimension array for a number, a string or a date. Text comparison can be case-sensitive or not.
If the array is sorted it must be filled homogeneously, which means that all items must be scalars of the same type (Empty and Null items are forbidden).
The result of the method is unpredictable when the array is announced as sorted and actually is not.
A binary search is performed on sorted arrays. Otherwise, arrays are simply scanned from top to bottom and Empty and Null items are ignored.
The method returns LBound(input array) - 1 if the search was not successful.

### Sintaksis:

svc.IndexOf(array_1d: any[0..*], tofind: any, casesensitive: bool = False, sortorder: str = ''): int

### Parameter:

array_1d: The array to scan.

tofind: A number, a date or a string to find.

casesensitive: Only for string comparisons (Default = False).

sortorder: It can be either "ASC", "DESC" or "" (not sorted). The default value is "".

### Contoh:

        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

## Insert

Insert before a given index of the input array the items listed as arguments.
Arguments are inserted blindly. Each of them might be either a scalar of any type or a subarray.

### Sintaksis:

svc.Insert(array_1d: any[0..*], before: int, arg0: any, [arg1: any] ...): any[0..*]

### Parameter:

array_1d: The pre-existing array, may be empty.

before: The index before which to insert; must be in the interval [LBound, UBound + 1].

arg0, arg1, ...: Items that will be inserted into array_1d.

### Contoh:

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

## InsertSorted

Inserts into a sorted array a new item on its place.
The array must be filled homogeneously, meaning that all items must be scalars of the same type.
Empty and Null items are forbidden.

### Sintaksis:

svc.InsertSorted(array_1d: any[0..*], item: any, sortorder: str = 'ASC', casesensitive: bool = False): any[0..*]

### Parameter:

array_1d: The array into which the value will be inserted.

item: The scalar value to insert, of the same type as the existing array items.

sortorder: It can be either "ASC" (default) or "DESC".

casesensitive: Only for string comparisons (Default = False).

### Contoh:

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

## Intersection

Build a set, as a zero-based array, by applying the intersection set operator on the two input arrays. Resulting items are contained in both arrays.
The resulting array is sorted in ascending order.
Both input arrays must be filled homogeneously, in other words all items must be scalars of the same type. Empty and Null items are forbidden.
Text comparison can be case sensitive or not.

### Sintaksis:

svc.Intersection(array1_1d: any[0..*], array2_1d: any[0..*], casesensitive: bool = False): any[0..*]

### Parameter:

array1_1d: The first input array.

array2_1d: The second input array.

casesensitive: Applies to arrays populated with text items (Default = False).

### Contoh:

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

## Join2D

Join a two-dimensional array with two delimiters, one for the columns, one for the rows.

### Sintaksis:

svc.Join2D(array_2d: any [0..*, 0..*], [columndelimiter: str], [rowdelimiter: str], [quote: str]): str

### Parameter:

array_2d: Each item must be either text, a number, a date or a boolean.
Dates are transformed into the YYYY-MM-DD hh:mm:ss format.
Invalid items are replaced by a zero-length string.

columndelimiter: Delimits each column (default = Tab/Chr(9)).

rowdelimiter: Delimits each row (default = LineFeed/Chr(10))

quote: If True, protect strings with double quotes. The default is False.

### Contoh:

        ' arr = | 1, 2, "A", [2020-02-29], 51, 2, "A", [2020-02-29], 5           |
        '       | 6, 7, "this is a string", 9, 106, 7, "this is a string", 9, 10 |
        Dim arr as Variant : arr = Array()
        arr = SF_Array.AppendRow(arr, Array(1, 2, "A", [2020-02-29], 51, 2, "A", [2020-02-29], 5))
        arr = SF_Array.AppendRow(arr, Array(6, 7, "this is a string", 9, 106, 7, "this is a string", 9, 10))
        Dim arrText as String
        arrText = SF_Array.Join2D(arr, ",", "/", False)
        ' 1,2,A,,51,2,A,,5/6,7,this is a string,9,106,7,this is a string,9,10

## Prepend

Prepend at the beginning of the input array the items listed as arguments.

### Sintaksis:

svc.Prepend(array_1d: any[0..*], arg0: any, [arg1: any] ...): any[0..*]

### Parameter:

array_1d: The pre-existing array, may be empty.

arg0, arg1, ...: A list of items to prepend to array_1d.

### Contoh:

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

## PrependColumn

Prepend to the left side of a two dimension array a new column. The resulting array has the same lower boundaries as the initial two dimension array.

### Sintaksis:

svc.PrependColumn(array_2d: any[0..*, 0..*], column: any[0..*]): any[0..*, 0..*]

### Parameter:

array_2d: The pre-existing array, may be empty. If that array has 1 dimension, it is considered as the last column of the resulting 2 dimension array.

column: A 1-dimensional array with as many items as there are rows in array_2d.

### Contoh:

        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

## PrependRow

Prepend a new row at the beginning of a 2-dimensional array. The resulting array has the same lower boundaries as the initial 2-dimensional array.

### Sintaksis:

svc.PrependRow(array_2d: any[0..*, 0..*], row: any[0..*]): any[0..*, 0..*]

### Parameter:

array_2d: The pre-existing array, may be empty. If that array has 1 dimension, it is considered as the last row of the resulting 2-dimensional array.

row: A 1-dimensional array containing as many items as there are columns in array_2d.

### Contoh:

        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

## RangeInit

Initialize a new zero-based array with numeric values.

### Sintaksis:

svc.RangeInit(from: num, upto: num, [bystep: num]): num[0..*]

### Parameter:

from: Value of the first item.

upto: The last item should not exceed UpTo.

bystep: The difference between two successive items (Default = 1).

### Contoh:

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

## Reverse

Return the reversed one dimension input array.

### Sintaksis:

svc.Reverse(array_1d: any[0..*]): any[0..*]

### Parameter:

array_1d: The array to reverse.

### Contoh:

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

## Shuffle

Returns a random permutation of a one-dimensional array.

### Sintaksis:

svc.Shuffle(array_1d: any[0..*]): any[0..*]

### Parameter:

array_1d: The array to shuffle.

### Contoh:

        Dim a As Variant
        a = SF_Array.Shuffle(Array(1, 2, 3, 4))
            ' Array "a" is now in random order, f.i. (2, 3, 1, 4)

## Slice

Returns a subset of a one-dimensional array.

### Sintaksis:

svc.Slice(array_1d: any[0..*], from: int, [upto: int]): any[0..*]

### Parameter:

array_1d: The array to slice.

from: The lower index in array_1d of the subarray to extract (from included)

upto: The upper index in array_1d of the subarray to extract (upto included). The default value is the upper bound of array_1d. If upto < from then the returned array is empty.

### Contoh:

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

## Sort

Sort a one dimension array in ascending or descending order. Text comparisons can be case-sensitive or not.
The array must be filled homogeneously, which means that items must be scalars of the same type.
Empty and Null items are allowed. Conventionally Empty < Null < any other scalar value.

### Sintaksis:

svc.Sort(array_1d: any[0..*], sortorder: str, casesensitive: bool = False): any[0..*]

### Parameter:

array_1d: The array to sort.

sortorder: It can be either "ASC" (default) or "DESC".

casesensitive: Only for string comparisons (Default = False).

### Contoh:

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

## SortColumns

Return a permutation of the columns of a two dimension array, sorted on the values of a given row.
The row must be filled homogeneously, which means that all items must be scalars of the same type.
Empty and Null items are allowed. Conventionally Empty < Null < any other scalar value.

### Sintaksis:

svc.SortColumns(array_2d: any[0..*, 0..*], rowindex: int, sortorder: str, casesensitive: bool = False): any[0..*, 0..*]

### Parameter:

array_2d: The 2-dimensional array to sort.

rowindex: The index of the row that will be used as reference to sort the columns.

sortorder: It can be either "ASC" (default) or "DESC".

casesensitive: Only for string comparisons (Default = False).

### Contoh:

        ' arr = | 5, 7, 3 |
        '       | 1, 9, 5 |
        '       | 6, 1, 8 |
        Dim arr as Variant : arr = Array(5, 7, 3)
        arr = SF_Array.AppendRow(arr, Array(1, 9, 5))
        arr = SF_Array.AppendRow(arr, Array(6, 1, 8))
        arr = SF_Array.SortColumns(arr, 2, "ASC")
        ' arr = | 7, 5, 3 |
        '       | 9, 1, 5 |
        '       | 1, 6, 8 |

## SortRows

Return a permutation of the rows of a two dimension array, sorted on the values of a given column.
The column must be filled homogeneously, therefore all items must be scalars of the same type.
Empty and Null items are allowed. Conventionally Empty < Null < any other scalar value.

### Sintaksis:

svc.SortRows(array_2d: any[0..*, 0..*], columnindex: int, sortorder: str, casesensitive: bool = False): any[0..*, 0..*]

### Parameter:

array_2d: The array to sort.

columnindex: The index of the column that will be used as reference to sort the rows.

sortorder: It can be either "ASC" (default) or "DESC".

casesensitive: Only for string comparisons (Default = False).

### Contoh:

        ' arr = | 5, 7, 3 |
        '       | 1, 9, 5 |
        '       | 6, 1, 8 |
        Dim arr as Variant : arr = Array(5, 7, 3)
        arr = SF_Array.AppendRow(arr, Array(1, 9, 5))
        arr = SF_Array.AppendRow(arr, Array(6, 1, 8))
        arr = SF_Array.SortRows(arr, 0, "ASC")
        ' arr = | 1, 9, 5 |
        '       | 5, 7, 3 |
        '       | 6, 1, 8 |

## Transpose

Swaps rows and columns in a two-dimensional array.

### Sintaksis:

svc.Transpose(array_2d: any[0..*, 0..*]): any[0..*, 0..*]

### Parameter:

array_2d: The 2-dimensional array to transpose.

### Contoh:

        ' arr1 = | 1, 2 |
        '        | 3, 4 |
        '        | 5, 6 |
        arr1 = Array(1, 2)
        arr1 = SF_Array.AppendRow(arr1, Array(3, 4))
        arr1 = SF_Array.AppendRow(arr1, Array(5, 6))
        arr2 = SF_Array.Transpose(arr1)
        ' arr2 = | 1, 3, 5 |
        '        | 2, 4, 6 |
        MsgBox arr2(0, 2) ' 5

## TrimArray

Remove from a one dimension array all Null, Empty and zero-length entries.
String items are trimmed with LibreOffice Basic Trim() function.

### Sintaksis:

svc.TrimArray(array_1d: any[0..*]): any[0..*]

### Parameter:

array_1d: The array to trim.

### Contoh:

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

## Union

Builds a set, as a zero-based array, by applying the union operator on the two input arrays. Resulting items originate from any of both arrays.
The resulting array is sorted in ascending order.
Both input arrays must be filled homogeneously, their items must be scalars of the same type. Empty and Null items are forbidden.
Text comparison can be case sensitive or not.

### Sintaksis:

svc.Union(array1_1d: any[0..*], array2_1d: any[0..*], casesensitive: bool = False): any[0..*]

### Parameter:

array1_1d: The first input array.

array2_1d: The second input array.

casesensitive: Applicable only if the arrays are populated with strings (Default = False).

### Contoh:

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

## Unique

Build a set of unique values derived from the input array.
The input array must be filled homogeneously, its items must be scalars of the same type. Empty and Null items are forbidden.
Text comparison can be case sensitive or not.

### Sintaksis:

svc.Unique(array_1d: any[0..*], casesensitive: bool = False): any[0..*]

### Parameter:

array_1d: The input array.

casesensitive: Applicable only if the array is populated with strings (Default = False).

### Contoh:

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

Semua Basic routines atau identifiers dalam ScriptForge yang diawali dengan karakter garis bawah "_" adalah untuk penggunaan internal. Mereka tidak dimaksudkan untuk digunakan dalam makro dasar atau skrip Python.

Topik Terkait

Array Functions

Using Calc Functions in Macros

ScriptForge.Dictionary service