配列操作 - stuncloud/UWSCR GitHub Wiki
JOIN
対応バージョン: 0.3.0
配列内の要素を文字列として結合します
文字列 = join(配列, [区切り文字, 空文字フラグ, 開始, 終了])
変数名 | 型 | 種別 | 説明 |
---|---|---|---|
配列 | 配列 | 必須 | 配列変数 |
区切り文字 | 文字列 | 省略可 | 結合時の区切り文字 (省略時は半角スペース) |
空文字フラグ | bool | 省略可 | FALSE: 空文字も結合する (デフォルト) |
TRUE: 空文字は除外 | |||
開始 | 数値 | 省略可 | どの要素から結合を開始するか (省略時は0) |
終了 | 数値 | 省略可 | どの要素まで結合するか (省略時は配列長-1) |
arr = ["foo", "bar", "baz", "qux"]
print join(arr) // foo bar baz qux
print join(arr, "+") // foo+bar+baz+qux
print join(arr, "+", FALSE, 1, 2) // bar+baz
// 空文字フラグ
print join(["hoge", "","fuga"], "&", FALSE) // hoge&&fuga
print join(["hoge", "","fuga"], "&", TRUE) // hoge&fuga
QSORT
対応バージョン: 0.8.0
配列内の要素を並び替えます
(あらゆる型を文字列扱いでソートします)
UWSCとはソート結果が異なります
qsort(var キー配列, ソート順=QSRT_A, var 配列, ...)
変数名 | 型 | 種別 | 説明 |
---|---|---|---|
キー配列 | 配列 | 必須 | ソートする配列 |
ソート順 | 定数 | 省略可 | ソート順を示す定数 |
QSRT_A : 昇順 (デフォルト) |
|||
QSRT_D : 降順 |
|||
QSRT_UNICODEA : UNICODE文字列順 昇順 |
|||
QSRT_UNICODED : UNICODE文字列順 降順 |
|||
QSRT_NATURALA : 数値順 昇順 |
|||
QSRT_NATURALD : 数値順 降順 |
|||
配列 | 配列 | 省略可 | キー配列のソートに連動してソートされる配列 |
キー配列よりサイズの小さい配列を渡すとソート前にEMPTYで埋められます | |||
8つまで指定可能 |
// 連動ソート
// キー配列を並び替え、それと同じように別の配列も並び替えます
key = [5,2,1,4,3]
arr1 = ["お","い","あ","え","う"]
arr2 = ["お","い","あ","え","う", "か"] // 余分はソート対象外、この場合「か」は位置が変更されない
arr3 = ["お","い","あ","え"] // 不足の場合末尾にEMPTYが追加されてからソート
qsort(key, QSRT_A, arr1, arr2, arr3)
print key // [1, 2, 3, 4, 5]
print arr1 // [あ, い, う, え, お]
print arr2 // [あ, い, う, え, お, か]
print arr3 // [あ, い, , え, お]
qsort(key, QSRT_D, arr1, arr2, arr3)
print key // [5, 4, 3, 2, 1]
print arr1 // [お, え, う, い, あ]
print arr2 // [お, え, う, い, あ, か]
print arr3 // [お, え, , い, あ]
REVERSE
対応バージョン: 0.8.0
配列の順序を反転させます
reverse(var 配列)
変数名 | 型 | 種別 | 説明 |
---|---|---|---|
配列 | 配列 | 参照渡し | 順序を反転させる配列 |
arr = [1,2,3]
print arr // [1,2,3]
reverse(arr)
print arr // [3,2,1]
RESIZE
対応バージョン: 0.8.0
配列のサイズを変更し、その最大インデックス値を得ます
最大インデックス値 = resize(var 配列, インデックス値=EMPTY, 初期値=EMPTY)
変数名 | 型 | 種別 | 説明 |
---|---|---|---|
配列 | 配列 | 参照渡し | サイズを変更する配列 |
インデックス値 | 数値 | 省略可 | 指定値 + 1 のサイズに変更される |
省略時は変更なし | |||
マイナス指定時はサイズ0配列になる | |||
初期値 | 値 | 省略可 | 元より大きなサイズに変更した際に埋める値 |
最大インデックス値 | 数値 | 戻り値 | サイズ変更後の最大インデックス値 |
arr = [1,2,3]
// サイズ指定なしの場合は配列に変更なし
print resize(arr) // 2
print length(arr) // 3
// サイズ指定
print resize(arr, 3) // 3
print length(arr) // 4
// マイナス指定でサイズ0になる
print resize(arr, -1) // -1
print length(arr) // 0
// サイズ変更+初期値指定
arr = []
print resize(arr, 2, "a") // 2
print length(arr) // 3
print arr // [a, a, a]
SLICE
対応バージョン: 0.8.0
配列から新たな配列を切り出します
新配列 = slice(元配列, 開始=0, 終了=EMPTY)
変数名 | 型 | 種別 | 説明 |
---|---|---|---|
元配列 | 配列 | 必須 | 切り出す元となる配列 (この配列の状態は変化しない) |
開始 | 数値 | 省略可 | 切り出し開始位置 (インデックス) ※負の数は0扱い |
終了 | 数値 | 省略可 | 切り出し終了位置 (インデックス) ※負の数は0扱い |
新配列 | 配列 | 戻り値 | 切り出された配列 |
// 開始と終了が未指定の場合は配列がそのまま複製される
base = [1,2,3,4,5]
new = slice(base)
print new // [1, 2, 3, 4, 5]
print slice(base, 2) // [3, 4, 5]
print slice(base, , 2) // [1, 2, 3]
print slice(base, 1, 3) // [2, 3, 4]
// 範囲外が指定されたら空配列が返る
print slice(base, 5) // []
SPLIT
対応バージョン: 0.8.0
文字列を区切り文字で分割し配列にします
配列 = slice(文字列, 区切り文字=" ", 空文字フラグ=FALSE, 数値フラグ=FALSE, CSVフラグ=FALSE)
変数名 | 型 | 種別 | 説明 |
---|---|---|---|
文字列 | 文字列 | 必須 | 分割する文字列 |
区切り文字 | 文字列 | 省略可 | 区切り文字、省略時は半角スペース |
CSVフラグ有効時は最初の一文字のみ使用される | |||
空文字フラグ | 真偽値 | 省略可 | FALSE: 空文字を含める (デフォルト) |
TRUE: 空文字を含めない | |||
数値フラグ | 真偽値 | 省略可 | FALSE: 数値変換を行わない (デフォルト) |
TRUE: 数値に変換する、変換できない場合は空文字にする | |||
CSVフラグ | 真偽値 | 省略可 | FALSE: 通常の分割を行う (デフォルト) |
TRUE: CSVとして分割、空文字と数値のフラグは無視される | |||
配列 | 配列 | 戻り値 | 分割された配列 |
print SPLIT("a b c") // [a, b, c]
// 空文字フラグ
print split("a,,b,,c", ",", FALSE) // [a, , b, , c]
print split("a,,b,,c", ",", TRUE) // [a, b, c]
// 数値フラグ
print split("1,2,f,4,5", ",", FALSE, FALSE) // [1, 2, f, 4, 5]
print split("1,2,f,4,5", ",", FALSE, TRUE) // [1, 2, , 4, 5]
// 空文字フラグと組み合わせると数値以外を排除できる
print split("1,2,f,4,5", ",", TRUE, TRUE) // [1, 2, 4, 5]
// 空文字で分割した場合
print split("12345", "", FALSE) // [, 1, 2, 3, 4, 5, ]
print split("12345", "", TRUE) // [1, 2, 3, 4, 5]
// CSVフラグ
// , で区切られる
print split('a,b,"c,d",e', ",", , , FALSE) // [a, b, "c, d", e]
// "" 内を文字列扱いとし中の , では区切らない
print split('a,b,"c,d",e', ",", , , TRUE) // [a, b, c,d, e]
CALCARRAY
対応バージョン: 0.8.0
配列内の数値で計算を行います
結果 = calcarray(配列, 計算方法, 開始=0, 終了=EMPTY)
変数名 | 型 | 種別 | 説明 |
---|---|---|---|
配列 | 配列 | 必須 | 数値を含む配列 (数値以外の値は無視される) |
計算方法 | 定数 | 必須 | 計算方法を示す定数 |
CALC_ADD : 合計値を得る |
|||
CALC_MIN : 最小値を得る |
|||
CALC_MAX : 最大値を得る |
|||
CALC_AVR : 平均値を得る |
|||
開始 | 数値 | 省略可 | 計算範囲の開始位置 (インデックス) |
終了 | 数値 | 省略可 | 計算範囲の終了位置 (インデックス) 省略時は末尾まで |
結果 | 数値 | 戻り値 | 計算結果 |
arr = [1,2,3,4,5]
print calcarray(arr, CALC_ADD) // 15
print calcarray(arr, CALC_MIN) // 1
print calcarray(arr, CALC_MAX) // 5
print calcarray(arr, CALC_AVR) // 3
// 範囲指定
print calcarray(arr, CALC_ADD, 2, 3) // 7
print calcarray(arr, CALC_MIN, 2, 3) // 3
print calcarray(arr, CALC_MAX, 2, 3) // 4
print calcarray(arr, CALC_AVR, 2, 3) // 3.5
// 数値以外は無視される
arr = [1,2,"foo",4,5]
print calcarray(arr, CALC_ADD) // 12
print calcarray(arr, CALC_MIN) // 1
print calcarray(arr, CALC_MAX) // 5
print calcarray(arr, CALC_AVR) // 3 ※ 数値要素が4つなので (1+2+4+5) / 4
SETCLEAR
対応バージョン: 0.8.0
指定した値で配列を埋めます
setclear(var 配列, 値=EMPTY)
変数名 | 型 | 種別 | 説明 |
---|---|---|---|
配列 | 配列 | 参照渡し | 対象の配列 |
値 | 値 | 省略可 | 埋める値 |
arr = [1,2,3,4,5]
print arr // [1, 2, 3, 4, 5]
setclear(arr)
print arr // [, , , , ]
setclear(arr, 111)
print arr // [111, 111, 111, 111, 111]
SHIFTARRAY
対応バージョン: 0.8.0
指定した値の分配列をずらします
shiftarray(var 配列, シフト値)
変数名 | 型 | 種別 | 説明 |
---|---|---|---|
配列 | 配列 | 参照渡し | 対象の配列 |
シフト値 | 数値 | 必須 | 指定値分後方へずらす、マイナスなら前方 (空いた場所はEMPTYで埋められる) |
arr = [1,2,3,4,5]
print arr // [1, 2, 3, 4, 5]
shiftarray(arr, 2)
print arr // [, , 1, 2, 3]
shiftarray(arr, -2)
print arr // [1, 2, 3, , ]