2011年10月16日


VBScript の整数の入った配列をJavaScriptを使ってソートする

一つのソースで VBScript と JavaScript を混在させる必要があるので、
ソースは .wsf の形式で記述します。

JavaScript では、VBArray というオブジェクトがあるので、それを使っ
て少なくとも JavaScript 側で VBScript の配列をソートする事は容易
です。

ただ、それを戻す方法が直接には無いのでカンマ区切りの文字列にして
VBScript 側に返して、VBScript 側ではその文字列を分解してから整数
に戻して使用します
<job>
<script language="JavaScript">

// ***********************************************************
// VBの整数値の入った配列をソートして文字列で返す
// ***********************************************************
function js_sort(aData) {

	var vb_obj = new VBArray(aData);

	var js_array = vb_obj.toArray();

	js_array.sort(sortFunction);

	var str = ""

	var i

	for( i = 0; i <= vb_obj.ubound(); i++ ) {
		if ( i != 0 ) {
			str += ","
		}
		str += js_array[i];
	}

	return str

}
// ***********************************************************
// 数値用の比較関数
// ***********************************************************
function sortFunction(a,b) {

	if( parseInt((a+"")) < parseInt((b+"")) ) {
		return -1;
	}
	if( parseInt((a+"")) > parseInt((b+"")) ) {
		return 1;
	}
	return 0;
}

</script>
<script language="VBScript">
' ***********************************************************
' 処理開始
' ***********************************************************

' 配列の準備
Dim aData(10)

' 単純に値をセット
aData(0) = 5
aData(1) = 1
aData(2) = 2
aData(3) = 6
aData(4) = 3
aData(5) = 4
aData(6) = 7
aData(7) = 10
aData(8) = 9
aData(9) = 8
aData(10) = 11

' ソートされた文字列を取得
str = js_sort( aData )

' 文字列として一旦分解
aData2 = Split(str,",")

' 正数値として入れ直す
For I = 0 to Ubound(aData2)
	aData2(I) = CLng(aData2(I))
Next

' 確認
For I = 0 to Ubound(aData2)
	Wscript.Echo aData2(I) * 10
Next

</script>

</job>



タグ:ソート
posted by at 21:54 | Comment(0) | JavaScript利用 | このブログの読者になる | 更新情報をチェックする


この記事へのコメント
コメントを書く
お名前:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。