見出し画像

はじめてのJScript+WSH その6 JScriptの配列と連想配列

はじめに

JScriptの配列と連想配列を確認していきます。

配列(array)

宣言時:[] を使用
追加時:array.push(value)
削除時:array.pop()
並び替え:array.sort()
配列の結合:array_1.concat(array_2)
要素数を取得:array.length

// 配列を宣言
var seguments = [];

// 配列の要素数を表示
WScript.echo(seguments.length);	// => 0

// 配列に要素を追加
seguments.push("192.168.2.0/24");
seguments.push("192.168.4.0/24");
seguments.push("192.168.1.0/24");
seguments.push("192.168.3.0/24");


// 配列の要素を表示
for(var i = 0; i < seguments.length; i++){
    WScript.echo(seguments[i]);		// => 第3オクテット 2,4,1,3の順
}

// 配列のソート(辞書順)
seguments.sort();

for(var i = 0; i < seguments.length; i++){
    WScript.echo(seguments[i]);		// => 第3オクテット 1,2,3,4の順
}

// 配列の最後の要素を削除
seguments.pop();

for(var i = 0; i < seguments.length; i++){
    WScript.echo(seguments[i]);		// => 第3オクテット 1,2,3の順
}


// 配列のソート(辞書の逆順)
var reverseOrder = function(a, b){
    if(a<b){
        return 1;
    }else if(a==b){
        return 0;
    }else{
        return -1;
    }
}

seguments.sort(reverseOrder);	// 比較用の関数型オブジェクトを渡す

for(var i = 0; i < seguments.length; i++){
    WScript.echo(seguments[i]);		// => 第3オクテット 3,2,1の順
}


// 配列の結合
var seguments_2 = [
                  "172.16.1.0/24",
                  "172.16.2.0/24",
                  "172.16.3.0/24"
                 ];


var seguments_all = seguments.concat(seguments_2);

for(var i = 0; i < seguments_all.length; i++){
    WScript.echo(seguments_all[i]);		// => 192.168.3.0/24  192.168.2.0/24  192.168.1.0/24  172.16.1.0/24  172.16.2.0 /24 172.16.3.0/24
}

また、下記のような機能もあります。

配列を文字列に変換:array.join()
並び替え(逆順):array.reverse()
先頭の要素を抜き出して削除:array.shift()
先頭に要素を追加:array.unshift(value)
末尾に要素を追加:array.push(value) ※再掲
要素の切り出し:array.slice(x,x)

var array = [1,3,4,2];


// 配列を文字列にして返す
WScript.echo(array.join("-")); // => 1-3-4-2


// 配列を逆順にする
array.reverse();
WScript.echo(array.join("_")); // => 2_4_3_1


// 先頭の要素を返して配列から削除
WScript.echo(array.shift());   // => 2
WScript.echo(array.join("_")); // => 4_3_1

// 先頭に要素を追加
array.unshift(0);
WScript.echo(array.join("_")); // => 0_4_3_1

// 末尾に要素を追加
array.push(9)
WScript.echo(array.join("_")); // => 0_4_3_1_9


// 先頭の要素を返して配列から削除
var array = [1,3,4,2,5,6,7,8];
WScript.echo(array.slice(3).join(" "));   // => 2 5 6 7 8 ※index:3の要素"2"以降を切り出す

var array = [1,3,4,2,5,6,7,8];
WScript.echo(array.slice(1,4).join(" "));   // => 3 4 2 ※4つ目の要素は含まれない

var array = [1,3,4,2,5,6,7,8];
WScript.echo(array.slice(1,-2).join(" "));   // => 3 4 5 5 6 ※後ろから見てindex:2の要素"6"までを切り出す

連想配列(hashmap)

宣言時:{} を使用
追加時:hashmap[key] = value
削除時:delete hashmap[key]

// 連想配列を宣言
var seguments = {}

// 連想配列に要素を追加
seguments["192.168.11.0/24"] = "home";
seguments["192.168.12.0/24"] = "office";
seguments["192.168.13.0/24"] = "school";

// 要素を表示
WScript.echo(seguments["192.168.11.0/24"]); // => home
WScript.echo(seguments["192.168.12.0/24"]); // => office
WScript.echo(seguments["192.168.13.0/24"]); // => school

// 連想配列の要素を削除
delete seguments["192.168.12.0/24"];

// 存在チェック
if(!seguments["192.168.12.0/24"]){
    WScript.echo("192.168.12.0/24 is not found");
}

// 要素を表示(for文を使用)
for(key in seguments){
    WScript.echo(seguments[key]);	// => home  school
} 

おわりに

JScriptは古の言語なだけあってリファレンスが少く、調べるのが大変でした。


参考

次の記事

前の記事


この記事が気に入ったらサポートをしてみませんか?