FrontPage 新規 編集 検索 一覧 ヘルプ

JScript

JScriptメモの目次

JScriptとは?

JScript とは、Microsoft による ECMA 262 規格仕様の言語です。オブジェクトを基本とするスクリプト言語で、インタープリタにより実行されます。完全なオブジェクト指向言語と比べると若干機能が少ないものの、その使用目的を考えると十分な機能が用意されています。

自分の使ってるJScriptのバージョンは?

VBScriptと同様の関数が用意されています。適当なファイル名(拡張子.js)で保存してダブルクリックしましょう。

 // version.js - JScriptのバージョン情報取得
 WScript.Echo(ScriptEngine()             + " " +
              ScriptEngineMajorVersion() + "." +
              ScriptEngineMinorVersion() + "." +
              ScriptEngineBuildVersion());

DBへの接続

JScriptをWSHで使う場合は、以下のようにしてオブジェクトを作成します。

 var cn = new ActiveXObject("ADODB.Connection")

下記サンプルはNorthwind.mdbの社員テーブルの内容を表示します。

 // dbconn.js - DBへの接続サンプル
 //
 var cn = new ActiveXObject("ADODB.Connection");
 var rs = new ActiveXObject("ADODB.RecordSet");
 
 // 接続文字列(カレントのNorthwind.mdbと接続)
 cn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Northwind.mdb;");
 rs.Open("社員", cn, 3, 1, 2);
 WScript.Echo(rs.GetString);
 
 rs.Close;
 cn.Close;

配列のSort(並べ替え)

JScriptでは、VBScriptにはないSortメソッドが用意されています。ですので簡単にSortが可能です。

sortメソッドの引数無しだと、文字列評価になります。

 // sort.js - JScriptのソート1
 //var ar = new Array(5, 7, 4, 8, 10, 2, 1, 5, 8, 6);
 var ar = new Array("イヌ", "ゴリラ", "ネズミ", "ネコ", "ゾウ");
 ar.sort();
 WScript.Echo(ar.join(", "));

数値でソートしたい場合は、比較関数を引数指定します。

 // sort.js - JScriptのソート2
 var ar = new Array(5, 7, 4, 8, 10, 2, 1, 5, 8, 6);
 //var ar = new Array("イヌ", "ゴリラ", "ネズミ", "ネコ", "ゾウ");
 ar.sort(sortnum);
 WScript.Echo(ar.join(", "));
 
 function sortnum(a, b){
     return a - b;
 }

比較関数はマニュアルにもありますが、2つの引数の並び順評価を 正,0,負 で返す関数です。sortメソッドはこの関数を評価に使います。ですので、例えば動物の体の大きい順に並べ替えを行いたいというときには、以下のように書くこともできます。

 // sort.js - JScriptのソート3
 var ar = new Array("イヌ", "ゴリラ", "ネズミ", "ネコ", "ゾウ");
 ar.sort(sortanimal);
 WScript.Echo(ar.join(", "));
 
 function sortanimal(a, b){
     var animal = new ActiveXObject("Scripting.Dictionary");
     animal.add("ゾウ", 1);
     animal.add("ゴリラ", 2);
     animal.add("イヌ", 3);
     animal.add("ネコ", 4);
     animal.add("ネズミ", 5);
     return animal(a) - animal(b);
 }

まあこれは簡易的なやり方です。エントリー数が多いときには、迷わずDBを使いましょう:-)

おまけアルゴリズム

ユークリッドの互除法

VBSでも取り上げましたが、ユークリッドの互除法のJScript版です。JScriptの場合、?演算子が使えるので、再帰版は 1行で記述できます。びゅ〜でぃふぉ〜。

 // gcd.js - ユークリッドの互除法
 // 最大公約数 14
 var m = 1689982;
 var n = 4893882;
 
 WScript.Echo(m + "と" + n + "の最大公約数は" + gcd(m, n) + "です")
 
 // 再帰版
 function gcd(a, b){
     return a % b ? gcd(b, a % b) : b;
 }
 
 // ループ版
 function gcd2(a, b){
     while(b){
         var c = a % b; a = b; b = c;
     }
     return a;
 }
Yesterday Today Total