スタートページ>
Javascript>
配列
Obj配列・Map配列の定義方法と参照方法
連想配列には、
従来から、Object として使ってきた Obj配列
Mapオブジェクトとして設定されたMap配列
があります。
ここでは、それらの配列の
定義記述の方法
配列の行名・列名(key)・要素(value)などを参照する方法
を示します。
[テスト]直後に表示
上に示した「参照方法」を実際に行った結果(検証)
参考として、これ以外の多様な参照の方法
[テストソース]別ウインドウに表示
[テスト]のソースコード
[関数表示」別ウインドウに表示
Obj配列・Map配列を、先頭行を列名とする通常配列 Tbl配列に変換する関数です。
[テスト]では、Tbl配列に変換された検証を直後に表示し、
[関数表示」では、そのソースコードを別ウインドウに表示します。
Obj配列(1次元)
Obj配列(2次元、フラット型)
Obj配列(2次元、構造型)
Map配列(1次元)
Map配列(2次元、構造型)
Obj配列(1次元)
定義方法
入力 Obj配列 = {氏名:'阿部', 学部:'文学部', 年齢:20}
参照方法
列数
Object.keys(Obj配列).length; // 3
列名[j]
Object.keys(Obj配列); // 列名=['氏名','学部','年齢'] 列名[0]='氏名'
var 要素 = [];
for (var j=0; j<列数; j++) {
要素[j] = Obj配列[列名[j]]; // 要素=['阿部','文学部',20] 要素[0]='阿部'
}
Obj配列(2次元、フラット型)
定義方法
入力 Obj配列 = [
{氏名:'阿部', 学部:'文学部', 年齢:20},
{氏名:'井上', 学部:'工学部', 年齢:20}
];
参照方法
行数
Obj配列.length: // 2
列数
Object.keys(Obj配列[0]).length; // 3
列名[j]
Object.keys(Obj配列[0]); // 列名=['氏名','学部','年齢'] 列名[0]='氏名'
要素[i][j]
var 要素 = [];
for (var i=0; i<行数; i++) {
要素[i] = []; // 要素=[
for (var j in Object.keys(Obj配列[i])) { // ['阿部'.'文学部',20]. ←要素[0]
要素[i][j] = Obj配列[i][列名[j]]; // ['井上'.'工学部',20] ←要素[1]
} // ]
} // 要素[0][0]='阿部'
Obj配列(2次元、フラット型)→Tbl配列
Tbl配列 = Obj2toTbl(Obj配列)
列名 = Tbl配列["列名"], 要素 = Tbl配列["要素"]
Obj配列(2次元、構造型)
定義方法
var Obj配列 = {};
Obj配列['阿部'] = { 学部:'文学部', 年齢:20 }; // 先頭行には全ての列があるとする
Obj配列['井上'] = { 学部:'工学部', 年齢:20 }; // 順序は任意だが先頭行の順序に合わされる
参照方法
行数
Object.keys(Obj配列).length; // 2
行名[i]
Object.keys(Obj配列); // 行名=['阿部','井上'] 行名[0]='阿部'
列数
Object.keys(Obj配列.[行名[0]]).length; // 2
列名[j]
Object.keys(Obj配列[行名[0]]); // 列名=['学部','年齢'] 列名[0]='学部'
要素[i][j]
var 要素 = [];
for (var i=0; i<行数; i++) {
要素[i] = []; // 要素=[
for (var j in 列名) { // ['文学部',20]. ←要素[0]
要素[i][j] = Obj配列[行名[i]][列名[j]]; // ['工学部',20] ←要素[1]
} // ]
} // 要素[0][0]='文学部'
Obj配列(2次元、構造型)→Tbl配列
Tbl配列 = Obj3toTbl(Obj配列)
行名 = Tbl配列["行名"], 列名 = Tbl配列["列名"], 要素 = Tbl配列["要素"]
Map配列(1次元)
定義方法
var Map配列 = new Map( [
['氏名', '阿部'],
['学部', '文学部'],
['年齢', 20]
] );
参照方法
列数
Map配列.size; // 3
列名[j]
var 列名 = [];
for (var j of Map配列.keys()) {
列名.push(j); // 列名=['氏名','学部','年齢']
} // 列名[0]='氏名'
要素[j]
var 要素 = [];
for (var j=0; j<列数; j++) {
要素[j] = Map配列.get(列名[j]); // 要素 = ['阿部','文学部',20]
} // 要素[0]='阿部'
Map配列(2次元、構造型)
定義方法
var Map配列 = new Map( [
['阿部', new Map( [ ['学部', '文学部'], ['年齢', 20] ] ) ],
['井上', new Map( [ ['学部', '工学部'], ['年齢', 20] ] ) ]
]);
または
var Map配列 = new Map();
Map配列.set('阿部', new Map( [ ['学部', '文学部'], ['年齢', 20] ]));
Map配列.set('井上', new Map( [ ['学部', '工学部'], ['年齢', 20] ]));
参照方法
行数
var 行数 = Map配列.size; // 2
行名[i]
var 行名 = [];
for (var i of Map配列.keys()) {
行名.push(i); // ['阿部', '井上']
} // 行名[0] = '阿部'
列数
var 列数 = Map配列.get(行名[0]).size; // 2 行名[0]=先頭行に全列があるとした
列名[j]
var 列名 = [];
for (var j of Map配列.get(行名[0]).keys()) {
列名.push(j); // ['学部', '年齢']
} // 列名[0] = '学部'
要素[i][j]
要素 = [];
for (var i=0; i<列数; i++) {
要素[i] = [];
for (var j of Map配列.get(行名[i]).values()) {
要素[i].push(j); // [ ['文学部', 20], ['工学部', 20] ] }
} // 要素[0][0] = '文学部'
}
Map配列(2次元、構造型)→Tbl配列
Tbl配列 = Map3toTbl(Map配列)
行名 = Tbl配列["行名"], 列名 = Tbl配列["列名"], 要素 = Tbl配列["要素"]