inArrayインアレイ

配列の中に指定した要素があるかどうかを返します。

要素のインデックスを取得したい場合、arraySearch (自作関数)を使います。

構文
  1. Boolean = inArray( needle, haystack, strict )
引数
needle 必須
探す値
haystack 必須
配列
strict 省略可
型も同じかチェックします
戻り値
TRUE
配列中に指定した値が存在する
FALSE
配列中に指定した値が存在しない

プログラム

UWSC
//////////////////////////////////////////////////
// 【引数】
//   needle : 探す値 
//   haystack : 配列 
//   strict : 型も同じかチェックします 
// 【戻り値】
//   TRUE : 配列中に指定した値が存在する、FALSE : 配列中に指定した値が存在しない 
//////////////////////////////////////////////////
FUNCTION inArray( needle, haystack[], strict = FALSE)
	DIM res = FALSE
	FOR item IN haystack
		IFB needle = item THEN
			IFB strict THEN
				IFB VARTYPE(needle) = VARTYPE(item) THEN
					res = TRUE
					BREAK
				ENDIF
			ELSE
				res = TRUE
				BREAK
			ENDIF
		ENDIF
	NEXT
	RESULT = res
FEND

使い方

指定した値が配列に存在するか調べます。

UWSC
DIM array[] = "りんご", "メロン", "バナナ", "ぶどう"

PRINT inArray("りんご", array)
PRINT inArray("みかん", array)
結果
プレーンテキスト
True
False

型も同じかチェックするには第3引数にTrueを指定します。

UWSC
DIM array[] = 1, 2, "3", "4", "5"

PRINT inArray(2, array, TRUE)
PRINT inArray(3, array, TRUE)
PRINT inArray(3, array, FALSE)
結果
プレーンテキスト
True
False
True

プログラム実行例

フォルダ内の音声ファイルをすべて再生

UWSC
使用関数

特定の値を除くランダム値を取得

1行目の配列に取得しない値を格納した配列、5行目のRANDOMの引数が取得するランダム値の範囲、今回の場合0~19の範囲です。8行目のLENGTH関数でランダム値を格納した配列のサイズを取得し、10個になったら終了。

UWSC
HASHTBL iColumn

DIM Shell = CREATEOLEOBJ("Shell.Application")
DIM Folder = Shell.NameSpace("C:\Windows\Media")

FOR i = 0 TO 350
	iColumn[Folder.GetDetailsOf(EMPTYPARAM, i)] = i
NEXT

DIM FolderItems = Folder.Items
DIM extensions[] = ".wav", ".mid", ".avi", ".mp3"

FOR FolderItem IN FolderItems
	DIM path = FolderItem.Path
	IF inArray(Folder.GetDetailsOf(FolderItem, iColumn["ファイル拡張子"]), extensions) = FALSE THEN CONTINUE
	FUKIDASI(path)
	SOUND(path, TRUE)
NEXT

//////////////////////////////////////////////////
// 【引数】
//   needle : 探す値 
//   haystack : 配列 
//   strict : 型も同じかチェックします 
// 【戻り値】
//   TRUE : 配列中に指定した値が存在する、FALSE : 配列中に指定した値が存在しない 
//////////////////////////////////////////////////
FUNCTION inArray( needle, haystack[], strict = FALSE)
	DIM res = FALSE
	FOR item IN haystack
		IFB needle = item THEN
			IFB strict THEN
				IFB VARTYPE(needle) = VARTYPE(item) THEN
					res = TRUE
					BREAK
				ENDIF
			ELSE
				res = TRUE
				BREAK
			ENDIF
		ENDIF
	NEXT
	RESULT = res
FEND
結果
プレーンテキスト
16
17
18
11
3
17
11
10
3
12
使用関数

この記事は役に立ちましたか?

はい
いいえ
ご協力ありがとうございます。

関連記事

CALCARRAY関数 (スクリプト関数)
配列データを計算します。
GETALLWIN関数 (スクリプト関数)
全ウィンドウのIDを取得します。
GETOLEITEM関数 (スクリプト関数)
コレクションを取得します。
JOIN関数 (スクリプト関数)
配列の中身を区切り文字で結合し、文字列として返します。
LENGTH関数 (スクリプト関数)
文字数もしくは配列サイズを返します。
SETCLEAR関数 (スクリプト関数)
配列を指定された値で埋めます。
SHIFTARRAY関数 (スクリプト関数)
配列データをシフトします。
連想配列
連想配列とは、自動的に割り当てられる数字をキーとして持つかわりに、自由に任意の文字列を割り振ることができる配列のことです。添え字に番号の変わりに名前をつけることでわかりやすく管理することができます。
divisors (自作関数)
引数に指定した数値の約数のリストを返します。
Collatz (自作関数)
コラッツ数列 を求め結果を配列で返します。