arrayUnshiftアレイアンシフト関数

本ページには広告が含まれています。

arrayの先頭に指定された要素を加えます。リストの要素は全体として加えられるため、加えた要素の順番は変わりません。

配列の末尾に要素を追加するにはarrayPush関数 (自作関数)を使います。

構文
  1. Double = arrayUnshift( array, value1, …, value16 )
引数
array 必須
要素を加えられる配列
values 必須
加える値をvalue1から順に指定
戻り値
処理後の配列の要素の数

プログラム

UWSC
//////////////////////////////////////////////////
// 【引数】
//   array : 要素を加えられる配列 
//   values : 加える値をvalue1から順に指定 
// 【戻り値】
//   
//////////////////////////////////////////////////
FUNCTION arrayUnshift(var array[], value1 = EMPTY, value2 = EMPTY, value3 = EMPTY, value4 = EMPTY, value5 = EMPTY, value6 = EMPTY, value7 = EMPTY, value8 = EMPTY, value9 = EMPTY, value10 = EMPTY, value11 = EMPTY, value12 = EMPTY, value13 = EMPTY, value14 = EMPTY, value15 = EMPTY, value16 = EMPTY)
	DIM tmp[-1]
	DIM i = 1
	WHILE EVAL("value" + i) <> EMPTY
		arrayPush(tmp, EVAL("value" + i))
		i = i + 1
	WEND
	arrayMerge(tmp, array)
	RESIZE(array, UBound(tmp))
	SETCLEAR(array, EMPTY)
	FOR i = 0 TO UBound(tmp)
		array[i] = tmp[i]
	NEXT
	RESULT = LENGTH(array)
FEND

//////////////////////////////////////////////////
// 【引数】
//   arr : 追加される配列(参照引数) 
//   tmp : 追加する配列 
// 【戻り値】
//   
//////////////////////////////////////////////////
FUNCTION arrayMerge(Var arr[], tmp[])
	FOR n = 0 TO UBound(tmp)
		arrayPush(arr, tmp[n])
	NEXT
	RESULT = UBound(arr)
FEND

//////////////////////////////////////////////////
// 【引数】
//   array : 要素を追加する配列(参照引数) 
//   values : 追加する要素をvalue1から指定 
// 【戻り値】
//   
//////////////////////////////////////////////////
FUNCTION arrayPush(var array[], value1 = EMPTY, value2 = EMPTY, value3 = EMPTY, value4 = EMPTY, value5 = EMPTY, value6 = EMPTY, value7 = EMPTY, value8 = EMPTY, value9 = EMPTY, value10 = EMPTY, value11 = EMPTY, value12 = EMPTY, value13 = EMPTY, value14 = EMPTY, value15 = EMPTY, value16 = EMPTY)
    DIM i = 1
    WHILE EVAL("value" + i) <> EMPTY
	  DIM res = RESIZE(array, UBound(array) + 1)
	  array[res] = EVAL("value" + i)
	  i = i + 1
	WEND
	RESULT = LENGTH(array)
FEND

//////////////////////////////////////////////////
// 【引数】
//   inputs : 繰り返す文字列 
//   multiplier : inputsを繰り返す回数 
// 【戻り値】
//   
//////////////////////////////////////////////////
FUNCTION strRepeat(inputs, multiplier)
	DIM res = ""
	FOR n = 1 TO multiplier
		res = res + inputs
	NEXT
	RESULT = res
FEND

//////////////////////////////////////////////////
// 【引数】
//   arrayname : 上限値を求める配列の名前 
//   dimension : 返す次元を示す整数 
// 【戻り値】
//   
//////////////////////////////////////////////////
FUNCTION UBound(arrayname[], dimension = 1)
	RESULT = EVAL("RESIZE(arrayname" + strRepeat("[0]", dimension - 1) + ")")
FEND

解説

  1. 2行目
    UWSC
    	DIM tmp[-1]
    valuesを格納するための配列。
  2. 3行目
    UWSC
    	DIM i = 1
  3. 4,7行目
    UWSC
    	WHILE EVAL("value" + i) <> EMPTY
    		…
    	WEND
    value1から順にEMPTYになるまで処理を続けます。
  4. 5行目
    UWSC
    		arrayPush(tmp, EVAL("value" + i))
    valueのi番目の要素をtmpの末尾に追加します。
  5. 6行目
    UWSC
    		i = i + 1
    iをインクリメントします。
  6. 8行目
    UWSC
    	arrayMerge(tmp, array)
    tmparrayを結合した配列をtmpに格納します。
  7. 9行目
    UWSC
    	RESIZE(array, UBound(tmp))
    arrayの要素数をtmpの要素数に合わせます。
  8. 10行目
    UWSC
    	SETCLEAR(array, EMPTY)
    arrayの要素を空にします。
  9. 11-13行目
    UWSC
    	FOR i = 0 TO UBound(tmp)
    		array[i] = tmp[i]
    	NEXT
    tmpの要素をarrayに代入します。
  10. 14行目
    UWSC
    	RESULT = LENGTH(array)
    arrayの要素数を返します。

使い方

既存の配列の先頭に要素を追加

arrayの先頭にappleを追加します。

UWSC
DIM array[] = "orange", "banana"
arrayUnshift(array, "apple")

FOR item IN array
	PRINT item
NEXT
結果
プレーンテキスト
apple
orange
banana

既存の配列の先頭に複数の要素を追加

arrayの先頭にappleraspberryを追加します。

要素の追加は一つずつではなく全体で行われるので、appleraspberryの順番は変わりません。

UWSC
DIM array[] = "orange", "banana"
arrayUnshift(array, "apple", "raspberry")

FOR item IN array
	PRINT item
NEXT
結果
プレーンテキスト
apple
raspberry
orange
banana

関連記事

arrayPush関数 (自作関数)
配列の末尾に要素を追加します。
CALCARRAY関数 (スクリプト関数)
配列の合計値・最小値・最大値・平均値を求めます。
GETALLWIN関数 (スクリプト関数)
全ウィンドウのIDを取得します。
GETOLEITEM関数 (スクリプト関数)
JOIN関数 (スクリプト関数)
引数に指定した配列を結合し文字列を返します。
SETCLEAR関数 (スクリプト関数)
配列のすべての要素を任意の値で埋めます。
SHIFTARRAY関数 (スクリプト関数)
配列を指定した値だけシフトします。プラス値で後方、マイナス値で前方にシフトします。
連想配列
連想配列とは、自動的に割り当てられる数字をキーとして持つかわりに、自由に任意の文字列を割り振ることができる配列のことです。添え字に番号の変わりに名前をつけることでわかりやすく管理することができます。
divisors関数 (自作関数)
引数に指定した数値の約数のリストを返します。
LENGTH関数 (スクリプト関数)