« VBScriptやVBAからJScriptのArrayオブジェクトのインデックスアクセス(その2) | トップページ | VBScriptやVBAの配列に不定数の要素を追加するには? »

2008年5月17日 (土)

VBScriptやVBAからJScriptのArrayオブジェクトのインデックスアクセス(その3)

ラッパ関数を介して、インデックスアクセスするのが、お勧めです。

Set sc=CreateObject("ScriptControl")
sc.Language="JScript"
sc.AddCode "function set(a,k,v){a[k]=v;}function get(a,k){return a[k];}"

参照は、
  x=a[k]
の代わりに、
  x=sc.CodeObject.get(a,k)
または、
  x=sc.Run("get",a,k)

設定は、
  a[k]=x
の代わりに、
  call sc.CodeObject.set(a,k,x)
または、
  call sc.Run("set",a,k,x)

性能は、o(n)なので、n=a.length が大きくても、使えます。

また、Run()よりCodeObjectのほうが速くてよいでしょう。

« VBScriptやVBAからJScriptのArrayオブジェクトのインデックスアクセス(その2) | トップページ | VBScriptやVBAの配列に不定数の要素を追加するには? »