JavaScriptの配列の基礎と内部動作

配列の概要

従来のデータ型は単一値の保存に限定されますが、複数値を扱う場合には配列が効果的です。

配列の基本概念

配列(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配列の特性

  1. 存在しないインデックスアクセス → undefined
  2. 自動的な容量拡張
  3. 異なる型の混在可能
  4. メモリ割り当ての非連続性

構造化代入

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]

タグ: javascript 配列 ES6 データ構造

7月9日 20:30 投稿