配列の中に指定した要素があるかどうかを返します。
要素のインデックスを取得したい場合、arraySearch (自作関数)を使います。
- 構文
- Boolean = inArray( needle, haystack, strict )
- 引数
- needle 必須
- 探す値
- haystack 必須
- 配列
- strict 省略可
- 型も同じかチェックします
- 戻り値
- TRUE
- 配列中に指定した値が存在する
- FALSE
- 配列中に指定した値が存在しない
プログラム
//////////////////////////////////////////////////
// 【引数】
// 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
使い方
指定した値が配列に存在するか調べます。
DIM array[] = "りんご", "メロン", "バナナ", "ぶどう"
PRINT inArray("りんご", array)
PRINT inArray("みかん", array)
- 結果
True False
型も同じかチェックするには第3引数にTrueを指定します。
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
プログラム実行例
フォルダ内の音声ファイルをすべて再生
使用関数
特定の値を除くランダム値を取得
1行目の配列に取得しない値を格納した配列、5行目のRANDOMの引数が取得するランダム値の範囲、今回の場合0~19の範囲です。8行目のLENGTH関数でランダム値を格納した配列のサイズを取得し、10個になったら終了。
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 (自作関数)
- コラッツ数列 を求め結果を配列で返します。