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; }