配列の中に指定した要素があるかどうかを返します。
要素のインデックスを取得したい場合、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
res = TRUE
BREAK
ENDIF
NEXT
RESULT = res
FEND
プログラム実行例
画像ファイルの情報を取得
「ピクチャ\100ANDRO\20210314」にある画像ファイルの情報を出力。
CONST ssfMYPICTURES = 39
HASHTBL iColumn
DIM Shell = CREATEOLEOBJ("Shell.Application")
DIM Folder = Shell.NameSpace(ssfMYPICTURES)
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM path = FSO.BuildPath(Folder.Self.Path, "100ANDRO\20210314")
Folder = Shell.NameSpace(path)
FolderItems = Folder.Items
FOR n = 0 TO 350
iColumn[Folder.GetDetailsOf(EMPTYPARAM, n)] = n
NEXT
DIM temp = uniqueFilename(FSO.BuildPath(path, "Info.csv"))
FSO.CreateTextFile(temp, FALSE, FALSE)
DIM FID = FOPEN(temp, F_READ OR F_WRITE)
DIM array[] = "ファイル名", "撮影日時", "幅", "高さ", "サイズ", "ビットの深さ", "パス", "焦点距離", "向き"
FOR i = 1 TO UBound(array)
FPUT(FID, array[i], 1, i)
NEXT
DIM row = 2
DIM extensions[] = ".jpg", ".jpeg", ".png", ".bmp"
FOR FolderItem IN FolderItems
FUKIDASI(row + "/" + FolderItems.Count)
IF inArray(Folder.GetDetailsOf(FolderItem, iColumn["ファイル拡張子"]), extensions) = FALSE THEN CONTINUE
FOR i = 1 TO UBound(array)
FPUT(FID, Folder.GetDetailsOf(FolderItem, iColumn[array[i]]), row, i)
NEXT
row = row + 1
NEXT
FCLOSE(FID)
//////////////////////////////////////////////////
// 【引数】
// needle : 探す値
// haystack : 配列
// strict
// 【戻値】
// TRUE : 配列中に指定した値が存在する、FALSE : 配列中に指定した値が存在しない
//////////////////////////////////////////////////
FUNCTION inArray( needle, haystack[], strict = FALSE)
DIM res = FALSE
FOR item IN haystack
IFB needle = item THEN
res = TRUE
BREAK
ENDIF
NEXT
RESULT = res
FEND
//////////////////////////////////////////////////
// 【引数】
// 配列 : 上限値を求める配列
// 【戻値】
// 配列の上限値
//////////////////////////////////////////////////
FUNCTION UBound(array[])
RESULT = RESIZE(array)
FEND
//////////////////////////////////////////////////
// 【引数】
// path : ファイルのパス
// 【戻値】
// 重複しないファイル名
//////////////////////////////////////////////////
FUNCTION uniqueFilename(path)
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
IFB FSO.FileExists(path) THEN
DIM fol = FSO.GetParentFolderName(path)
DIM filename = FSO.GetBaseName(path)
DIM extension = FSO.GetExtensionName(path)
DIM i = 2
WHILE FSO.FileExists(FSO.BuildPath(fol, filename + " (" + i + ")." + extension))
i = i + 1
WEND
RESULT = FSO.BuildPath(fol, filename + " (" + i + ")." + extension)
ELSE
RESULT = path
ENDIF
FEND
- CREATEOLEOBJ
- Shell.NameSpace
- FSO.BuildPath
- Shell.Folder.Items
- uniqueFilename
- FSO.CreateTextFile
- FOPEN
- UBound
- FPUT
- FUKIDASI
- inArray
- Shell.Folder.GetDetailsOf
- FCLOSE
関連記事
- CALCARRAY (スクリプト関数)
- 配列の合計値・最小値・最大値・平均値を求めます。
- GETALLWIN (スクリプト関数)
- 全ウィンドウのIDを取得します。
- JOIN (スクリプト関数)
- 引数に指定した配列を結合し文字列を返します。
- POPUPMENU (スクリプト関数)
- ポップアップメニューを表示し、引数に指定した配列の中から選択された項目の要素番号を取得します。選択された項目を取得したい場合は、POPUPMENUの戻値を引数に指定した配列の要素番号として指定します。
- SLICE (スクリプト関数)
- SLICE関数は、配列の中を指定範囲の配列で返す関数です。第一引数に配列を指定し、第二引数に開始位置、第三引数に終了位置を指定します。第二・第三引数は省略可能で、省略した場合は配列全体を返します。戻値はsafearray型です。
- UBound
- 配列の最大インデックスを返します。
- 連想配列
- 連想配列とは、自動的に割り当てられる数字をキーとして持つかわりに、自由に任意の文字列を割り振ることができる配列のことです。添え字に番号の変わりに名前をつけることでわかりやすく管理することができます。
- divisors
- 引数に指定した数値の約数をリストを配列で返します。
- bubbleSort
- 引数に指定した配列をバブルソートで並び替えます。
- shakerSort
- シェーカーソートは、ソートのアルゴリズムの一つです。バブルソートを改良したもの。双方向バブルソート、改良交換法とも言われます。バブルソートではスキャンを一方向にしか行わないのに対し、シェーカーソートでは交互に二方向に行います。
- gnomeSort
- ノームソートはソートアルゴリズムの一つです。挿入ソートに似ているが、要素の移動は挿入ではなくバブルソートのような一連の交換で行います。
- heapSort
- 引数に指定された配列をヒープソートで並び替えます。
- oddEvenSort
- 奇偶転置ソートは、ソートのアルゴリズムの一つで、バブルソートを改良したもの。バブルソートではスキャンを一方向に順次行うのに対し、奇偶転置ソートでは組ごとに行います。
- shearSort
- シェアソートはソートアルゴリズムの一つで、データを長方形に並べた上で各行・各列ごとにソートを行ないます。
- QSORT (スクリプト関数)
- QSORT関数は、配列の中身をソートする関数です。戻値はありません。昇順・降順・UNICODE文字比較 昇順・UNICODE文字比較 降順・自然順ソート 昇順・自然順ソート 降順のいずれかを指定することができます。
- RESIZE (スクリプト関数)
- 配列のサイズを変更します。第二引数を省略した場合はサイズを取得します。
- SETCLEAR (スクリプト関数)
- 配列のすべての要素を任意の値で埋めます。
- SHIFTARRAY (スクリプト関数)
- 配列を指定した値だけシフトします。プラス値で後方、マイナス値で前方にシフトします。
- SPLIT (スクリプト関数)
- SPLIT関数は、引数に指定された文字列を区切文字列で区切り配列に格納します。区切文字列を省略した場合、スペースが区切文字列となります。戻値は配列でsafearray型です。
- FOR-IN-NEXT
- 配列やコレクションなどのグループの各要素に対して繰り返し処理を行います。
- combSort
- コムソートではソートの初期段階では離れた要素を比較交換します。そして徐々に2つの要素間の距離を縮めて、最後に直接隣接している要素どうしの比較交換を行います。
- arraySearch
- 配列の中から指定した要素が見つかった場合、その要素がある最初のインデックスを返します。
- arrayReverse
- 引数に指定した配列を逆順にして返します。
- selectionSort
- 選択ソートは、ソートのアルゴリズムの一つ。配列された要素から、最大値やまたは最小値を探索し配列最後の要素と入れ替えを行うことでソートします。
- insertionSort
- 挿入ソートは、ソートのアルゴリズムの一つ。整列してある配列に追加要素を適切な場所に挿入します。
- shellSort
- シェルソートは挿入ソートが改良された整列アルゴリズムです。リストにおいてあらかじめ離れている要素を交換しておき、最終的に挿入ソートを実行します。
- mergeSort
- マージソートは整列されていないリストを2つのリストに分割して、それぞれを整列させた後、それらをマージして整列済みのひとつのリストを作ります。
- quickSort
- 問題を小さな部分問題に分割していく分割統治法を利用した手法で、データから適当に基準値を決めこれより大きいグループと小さいグループに分けるという手順を、分けた小さなグループに対しても再帰的に繰り返していきます。
- bogoSort
- 要素をランダムに並べ替えることで偶発的な一致を試みる整列アルゴリズムです。