配列
配列って何?
配列の操作
参照テーブルとしての使い方
連想配列


配列って何?

配列とは複数のデータを格納できる引き出しのようなものです。
このように記述します。

var tbl = ["Toyota", "Nissan", "Honda"];
console.log(tbl);

出力は、

(3) ['Toyota', 'Nissan', 'Honda']
0:'Toyota'
1:'Nissan'
2:'Honda'
length:3

tblは3つの文字列を所有する配列です。具体的には、
tbl[0] → 'Toyota'
tbl[1] → 'Nissan'
tbl[2] → 'Honda'
長さ(データの数)→ 3
となります。
配列もC言語からみたら反則!のような記述ができます。

var tbl = ["Toyota", 1, "Honda"];
console.log(tbl);
	
結果は、

(3) ['Toyota', 1, 'Honda']
0:'Toyota'
1:1
2:'Honda'
length:3	

文字列と数値が混在して配列に定義されています。ちなみにこういう書き方をすると C言語やJavaなどではエラーになります。


配列の操作

配列の生成
1)配列コンストラクタ
var arr = new Array(1, 2, 3, 4);
2)配列リテラル
var arr = [1, 2, 3, 4];
3)通信のように通信時確定するデータは配列名を宣言する
var arr = new Array();
var arr = [];

配列データの取得
配列名[インデックス]
で取得できます。

	var tbl = ["Toyota", "Nissan", "Honda"];
	console.log(tbl[1]);

取得データはNissanです。

配列データの変更
配列名[インデックス]=変更する値
で取得できます。

	var tbl = ["Toyota", "Nissan", "Honda"];
	tbl[2]="Subaru";
	console.log(tbl[2]);
			
Subaruに変わりました。constで宣言した配列も変更できます。

配列データの追加
配列名[最後のインデックス+1]=追加する値
で取得できます。

	const tbl = ["Toyota", "Nissan", "Honda"];
	tbl[tbl.length]="BMW";
	console.log(tbl);
		
['Toyota', 'Nissan', 'Honda', 'BMW'] BMWが追加されました。

pushメソッド

	const tbl = ["Toyota", "Nissan", "Honda"];
	tbl.push("Subaru");
	console.log(tbl);
		
['Toyota', 'Nissan', 'Honda', 'Subaru'] 最後にSubaruが追加されました。

unshiftメソッド

	const tbl = ["Toyota", "Nissan", "Honda"];
	tbl.unshift("Subaru");
	console.log(tbl);
		
['Subaru', 'Toyota', 'Nissan', 'Honda']
最初にSubaruが追加されました。

配列データの削除
delete演算子

	const tbl = ["Toyota", "Nissan", "Honda"];
	delete tbl[1];
	console.log(tbl);
		
結果は、
['Toyota', …, 'Honda']
Nissanがundefinedになって配列の数は3のままです。

popメソッド

	const tbl = ["Toyota", "Nissan", "Honda"];
	tbl.pop();
	console.log(tbl);
		
結果は、
['Toyota', 'Nissan']
最後の要素であるHondaが削除され配列の大きさが2になりました。

shiftメソッド

	const tbl = ["Toyota", "Nissan", "Honda"];
	tbl.shift();
	console.log(tbl);
		
結果は、
['Nissan', 'Honda']
最初の要素であるToyotaが削除され配列の大きさが2になりました。

spliceメソッド
splice書式は,
splice(index, size)
です。

	const tbl = ["Toyota", "Nissan", "Honda", "Subaru"];
	var deleted = tbl.splice(0,2);
	console.log(tbl);
	console.log(deleted);

結果は、
tblは['Honda', 'Subaru']
deletedは['Toyota', 'Nissan']
index 0の"Toyota"から2つ目の要素"Nissan"が消去されています。
このメソッドならdeleteと違いundefinedの要素が残りません。
削除した要素に新しい要素を追加することもできます。

	const tbl = ["Toyota", "Nissan", "Honda", "Subaru"];
	var deleted = tbl.splice(0,2,"BMW","Mitubishi");
	console.log(tbl);
	console.log(deleted);

tblは['BMW', 'Mitubishi', 'Honda', 'Subaru']
削除された"Toyota", "Nissan"のところに追加されています。

配列データの抜き取り
sliceメソッドで要素を抜き取ることができます。

	const tbl = ["Toyota", "Nissan", "Honda", "Subaru"];
	var extract  = tbl.slice(0,3);
	console.log(extract);

['Toyota', 'Nissan', 'Honda']
インデックス0から(3-1)の要素を抜き取ることできました。
sliceメソッドではtblの要素は不変です。

文字列を配列に変換
splitメソッドで文字列を配列に変換できます。

	var str = "Good morning Mr Honda.";
	var tbl = str.split(" ");
	console.log(tbl);

['Good', 'morning', 'Mr', 'Honda.']
文字列を配列に変換できました。分割する要素の長さを指定することもできます。

	var str = "Good morning Mr Honda.";
	var tbl = str.split(" ", 2);
	console.log(tbl);

['Good', 'morning']
最初から2要素が変換されました。

配列を文字列に変換
joinメソッドで配列の要素を繋げて文字列に変換できます。

	var tbl =  ['Good', 'morning',"Mr", "Honda."];
	var str = tbl.join(" ");
	console.log(str);

Good morning Mr Honda. 文字列に変換できました。
tbl.join("/");
にすればスペースの代わりに/にすれば、
Good/morning/Mr/Honda.
上記のようにできます。

参照テーブルとしての使い方

データがすでに確定していて変更されることのない配列です。
例えばサウンドカードを使って長波の電波を受信するときのデータです。
送信局名 周波数(kHz)
NWC 19.8
NPM 21.4
JJI 22.2

	const station = ["NWC", 19.8, "NPM", 21.4, "JJI", 22.2];
	console.log(station);

結果は、
(6) ['NWC', 19.8, 'NPM', 21.4, 'JJI', 22.2]
0:'NWC'
1:19.8
2:'NPM'
3:21.4
4:'JJI'
5:22.2
length:6
JJIの周波数を取得するには、

const station = ["NWC", 19.8, "NPM", 21.4, "JJI", 22.2];
var freq = station[2 * 2 + 1];
console.log(freq);

結果は、
22.2
となります。
nwcは配列の0番目の要素です。JJIは4番目の要素ですが、送信局と周波数の2つの要素で 構成されるデータになるのでJJIは、
2番目の要素 * 2 + 周波数は+1した要素
になります。 JJIは2番目の要素で参照ししたければ配列の中に配列をいれる方法があります。

const station = [ ["NWC", 19.8], ["NPM", 21.4], ["JJI", 22.2] ];
var freq = station[2][1];
console.log(freq);

結果は、
22.2
となります。
連想配列を使うともっと直感的な記述になります。

連想配列

他のプログラミング言語で「連想配列」と呼ばれているものは、JavaScriptでも使えます。 参照テーブルとしての使い方で定義した配列を連想配列で記述します。 NWCのようなプロパティーがキーとなります。

const station =  {NWC: 19.8, NPM : 21.4, JJI : 22.2} ;
var freq = station.NWC;
console.log(freq);

結果は、
19.8
となります。とてもわかりやすくなりました。送信局名と周波数だけでしたが、 変調方式と設置国の2項目を追加するには????

const station =  {NWC: {freq:19.8, modulation : "MSK", contry : "Australia"},
		NPM : {freq:21.4, modulation :"MSK", contry : "USA"}, 
		JJI : {freq: 22.2, modulation :"MSK", contry : "Janan"},
		JJY : {freq: 40.0, modulation :"ASK", contry : "Janan"} }
var md = station.JJY.modulation;
console.log(md);

結果は、
ASK
です。
このようにプロパティーNWCに対する値としてオブジェクトを指定します。 キーに対して複数の要素を定義数することが多いのでこの表記方法がおススメです。

要素の追加
要素の追加は下記のようにキーと値を指定します。

	const station =  {NWC: 19.8, NPM : 21.4, JJI : 22.2} ;
	station.NLK = 24.8;
	// station["NLK"] = 24.8;//この記述も上と同じ
	console.log(station);

{NWC: 19.8, NPM: 21.4, JJI: 22.2, NLK: 24.8}
NLKが追加されました。

要素の削除
要素の削除は下記のようにdeleteにキーを指定します。

	const station =  {NWC: 19.8, NPM : 21.4, JJI : 22.2} ;
	delete station["NPM"];
	console.log(station);

{NWC: 19.8, JJI: 22.2}
NPMが削除されました。

要素の変更
要素の変更は下記のようにキーを指定sて値を変更します。

	const station =  {NWC: 19.8, NPM : 21.4, JJI : 22.2} ;
	station.NWC = 20.0;
	console.log(station);

{NWC: 20, NPM: 21.4, JJI: 22.2}
NPMの値が20に変更されました。

全キーの取得
全キーはObject.keys()で取得できます。

	const station =  {NWC: 19.8, NPM : 21.4, JJI : 22.2} ;
	var keys =  Object.keys(station);
	console.log(keys);	

['NWC', 'NPM', 'JJI']
キーが取得できました。