トッカンソフトウェア

JavaScript 配列

今回は配列、 次回はオブジェクトをやります。


定義

				
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JavaScriptのテストページ</title>
<script type="text/javascript">
	// 空の配列
	var ary1 = [];
	var ary2 = new Array();

	// 初期値がセットされた配列
	var ary3 = ["aaa","bbb"];
	var ary4 = new Array("aaa","bbb");

	// 領域だけ確保
	var ary5 = [,,];
	var ary6 = new Array(3);
</script>
</head>
<body>
</body>
</html>


			
配列は [ ] で定義します。オブジェクトは { } で定義します。

配列のループ

				
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JavaScriptのテストページ</title>
<script type="text/javascript">

	// 配列のループ
	var ary = ["one","two","three"];

	// EcmaScript5
	Object.keys(ary).forEach(function (key) {
		console.log("Object.keys:" + ary[key]);
	});

	// EcmaScript6
	for(let val of ary){
		console.log("of:" + val);
	}

	// inは使い方により予想外の動作をするため使わない方がいい
	for(var idx in ary){
		console.log("in:" + ary[idx]);
	}

	for(var n = 0;n < ary.length;n++){
		console.log("len:" + ary[n]);
	}
</script>
</head>
<body>
</body>
</html>


			
ループする場合、配列をObject.keys、of、inでループするか、配列のサイズ(.length)を出して、サイズ分だけループさせます。

配列の追加

				
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JavaScriptのテストページ</title>
<script type="text/javascript">
	// 空の配列
	var ary = [];

	// 要素の追加
	ary[0] = "aaa";

	// 最後に要素を追加
	ary.push("end");

	// 最初に要素を追加
	ary.unshift("start");

	// 指定場所に要素を追加
	// (挿入位置,0,要素,・・・)
	ary.splice(2,0,"bbb","ccc");

	//start,aaa,bbb,ccc,endと表示される
	alert(ary.toString());
</script>
</head>
<body>
</body>
</html>


			
配列に要素を追加する場合、インデックスを指定するか、push、unshift、splice関数を使用します。

配列の参照、削除


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JavaScriptのテストページ</title>
<script type="text/javascript">
	// 配列の初期化
	var ary = ["start","aaa","bbb","end"];

	// 配列の参照(aaaが出力)
	console.log(ary[1]);

	// 指定位置、サイズの配列の抜き出し(bbbが配列で出力され、元配列から削除)
	console.log(ary.splice(2,1));

	// 一番後ろの配列の抜き出し(endが出力され、元配列から削除)
	console.log(ary.pop());

	// 一番前の配列の抜き出し(startが出力、元配列から削除)
	console.log(ary.shift());

	// 上の3処理でそれぞれ配列の中身を削除しているため、ここでは1が出力
	console.log(ary.length);
</script>
</head>
<body>
</body>
</html>

配列を参照するにはインデックスを指定します。配列から値を取り出し、同時に削除する場合は、pop、shift関数を使用します。
指定インデックスの配列を削除するにはspliceメソッドを使います。使い方は関数を参照。

関数

				
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JavaScriptのテストページ</title>
<script type="text/javascript">

	// 文字列を指定文字で区切り、配列作成
	var ary = "111,2,33,4,5".split(",");

	// 配列を文字列に変更
	console.log(ary.toString());
	// → 111,2,33,4,5

	// 配列の大きさ
	console.log(ary.length);
	// → 5

	// 配列の大きさを変更
	ary.length = 3;
	console.log(ary.toString());
	// → 111,2,33

	// 配列の順番を逆に並び替え
	ary.reverse();
	console.log(ary.toString());
	// 111,2,33 → 33,2,111

	// 配列の順番を並び替え
	ary.sort();
	console.log(ary.toString());
	// 33,2,111 → 111,2,33

	// ソート条件の指定(数値順)
	ary.sort(function(a,b){return a-b});
	console.log(ary.toString());
	// 111,2,33 → 2,33,111

	// 区切り文字指定の文字列出力
	console.log(ary.join("-"));
	// 2,33,111 → 2-33-111

	// 配列の結合(元配列の変更なし)
	var ary2 = ary.concat([6,7]);
	console.log(ary2.toString());
	// 2,33,111 → 2,33,111,6,7


	// 指定箇所の抜き出し(元配列の変更なし)
	// (開始位置、終了位置[省略可])
	console.log(ary2.slice(1,4).toString());
	// 2,33,111,6,7 → 33,111,6


	// ★配列指定位置の削除にも使える↓

	// 配列の分割(元配列の変更あり)
	// (開始位置、長さ[省略可])
	var ary3 = ary2.splice(1,2);
	console.log(ary3.toString());
	// 2,33,111,6,7 → 33,111

	console.log(ary2.toString());
	// 2,33,111,6,7 → 2,6,7

</script>
</head>
<body>
</body>
</html>


			
配列で使える主な関数の例を記述しました。動作についてはコメントを参照して下さい。

配列の存在チェック


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JavaScriptのテストページ</title>
<script type="text/javascript">
	// 配列の初期化
	var ary = ["start","aaa","end"];

	//配列の存在チェック
	if(ary.indexOf("aaa") >= 0){
		alert("OK")
	}
	if(ary.indexOf("bbb") >= 0){
		alert("NG")
	}

</script>
</head>
<body>
</body>
</html>


ページのトップへ戻る