配列操作 - 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, , ]