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;
}
{{edit 更新履歴}}