配列の概要
従来のデータ型は単一値の保存に限定されますが、複数値を扱う場合には配列が効果的です。
配列の基本概念
配列(Array)は組み込みオブジェクトであり、値の保存機能では通常のオブジェクトと類似しています。重要な差異点:
- 通常オブジェクト:文字列をプロパティ名として使用
- 配列:数値インデックスによる要素操作(0起点の整数インデックス)
配列は特にリストデータの保存に適しており、実開発で頻繁に利用されます。配列要素には任意のデータ型(オブジェクト、関数、別の配列等)が可能で、配列を含む場合は二次元配列と呼称します。
配列の生成方法
リテラル形式
const emptyArray = []; // 空配列
const initializedArray = [100, 200, 300]; // 初期値付き配列
コンストラクタ形式
const arrA = Array(); // 空配列
const arrB = Array(5); // サイズ指定
const arrC = Array(150, 250, 350); // 初期値複数指定
配列操作の基本
要素の追加・取得
const dataSet = [];
dataSet[0] = 'Tokyo';
dataSet[2] = 'Osaka';
console.log(dataSet[1]); // undefined
console.log(dataSet.length); // 3
長さの変更
const original = [11, 22, 33];
original.length = 1; // [11]
original.length = 4; // [11, undefined, undefined, undefined]
反復処理
const points = [90, 85, 78];
for (let idx = 0; idx < points.length; idx++) {
console.log(points[idx]);
}
JavaScript配列の特性
- 存在しないインデックスアクセス → undefined
- 自動的な容量拡張
- 異なる型の混在可能
- メモリ割り当ての非連続性
構造化代入
const [primary, secondary = 500, ...remainder] = [100, 200];
console.log(primary); // 100
console.log(secondary); // 200
console.log(remainder); // []
実践例
反転処理
const origin = [1, 2, 3, 4];
const reversed = [];
for (let i = 0; i < origin.length; i++) {
reversed[i] = origin[origin.length - 1 - i];
}
console.log(reversed); // [4, 3, 2, 1]
ソート処理
const unsorted = [30, 10, 40, 20];
for (let outer = 0; outer < unsorted.length - 1; outer++) {
for (let inner = 0; inner < unsorted.length - outer - 1; inner++) {
if (unsorted[inner] > unsorted[inner + 1]) {
[unsorted[inner], unsorted[inner + 1]] = [unsorted[inner + 1], unsorted[inner]];
}
}
}
console.log(unsorted); // [10, 20, 30, 40]