JavaScriptの配列操作は、データを扱う上で非常に重要なスキルです。
この記事では、JavaScriptにおける配列の基本から応用までを初心者向けにわかりやすく解説していきます。
配列の定義や初期化から始め、要素の追加や削除、検索方法、さらには配列の結合や操作のテクニックまでを具体的なサンプルコードを交えながら紹介しています。
また、配列操作をする際の注意点や連想配列の使い方、さらにはTypeScriptやJSONを利用した配列操作の応用についても触れていきますので、ぜひ参考にしてみてください。

食品商社営業からシステムエンジニアへと転職後、バックエンドエンジニア(Java, PHP)として尽力。開発リーダーを含む上流工程〜下流工程に携わる。IT関連記事から芸能・法律など幅広ジャンルにて執筆。
JavaScript配列の基本:初心者向けにわかりやすく理解しよう
JavaScriptでのプログラミングにおいて、配列はデータの集合を扱う上でよく利用されるものです。
ここでは、配列の基本的な概念、初期化、基本的な操作方法について初心者でも理解しやすいように詳細に解説していきます。
JavaScript配列とは:定義と基本的な特徴
JavaScriptの配列は、複数の値を一つの変数に格納できるものです。
配列内の各要素は0から始まるインデックスによってアクセスされ、異なるデータ型の値を同時に格納することが可能です。
例えば、数値、文字列、オブジェクト、さらには他の配列まで様々なタイプのデータを一つの配列内に混在させることができます。
配列は []
(角括弧)を使用して宣言され、各要素はカンマで区切られます。
例えば、let fruits = ["Apple", "Banana", "Cherry"];
というコードは、3つの文字列要素を持つ配列を作成します。
この配列の fruits[0]
は "Apple"
、fruits[1]
は "Banana"
となります。
このインデックスを利用することで配列内の任意の要素にアクセスし、その値を読み取ったり変更したりすることができます。
配列の初期化と基本的な操作
配列の初期化は直接的に具体的な要素を持つ配列を定義する方法と空の配列を作成して後から要素を追加する方法の2つがあります。
前者は先ほどの fruits
配列の例のように、配列を宣言する際に要素を含める方法です。
後者は let myArray = [];
のように空の配列を宣言し、.push()
メソッドを使用して要素を追加する方法です。
例えば、myArray.push("New Element");
は myArray
に "New Element"
を追加します。
配列の要素を取り出す基本的な方法にはインデックスを使用する直接的なアクセスの他に、.pop()
や .shift()
などのメソッドがあります。
.pop()
は配列の最後の要素を取り出し、.shift()
は最初の要素を取り出します。
配列の長さは .length
プロパティによって取得でき、これは配列に含まれる要素の数を返します。
例えば、fruits.length
は 3
を返します。
JavaScriptでの配列操作:検索から結合まで
ここでは、配列内の要素を検索するためのメソッド(forEach
、map
、filter
)と配列を結合するテクニックについて、実用的な例を交えて解説していきます。
これらの操作をマスターすることで、JavaScriptでのデータ処理の幅が大きく広がるのでぜひ覚えておきましょう。
配列内の要素の検索方法
JavaScriptの配列操作メソッドは、データの検索、変換、抽出を簡単に行うことができます。
ここでは、forEach
、map
、filter
の3つのメソッドを使用した検索方法に焦点を当てます。
「forEach」を用いた検索方法
forEach
メソッドは、配列の各要素に対して関数を一度ずつ実行します。
これは、配列の各要素をループして操作する際に便利、例えば次のコードは配列内の各数値をコンソールに出力します。
const numbers = [1, 2, 3, 4, 5];
numbers.forEach(number => console.log(number));
このメソッドは配列の要素を直接変更することはありませんが、配列の各要素に対して何らかの操作(例:ログの出力)を行いたい場合に有用です。
「map」を用いた検索方法
map
メソッドは、配列の各要素に関数を適用しその結果からなる新しい配列を作成しますが、これは元の配列を変更せずに変換した要素を持つ新しい配列を得たい場合に使用します。
例えば、次のコードは各数値を2倍にして新しい配列を作成します。
const numbers = [1, 2, 3, 4, 5];
const doubled = numbers.map(number => number * 2);
console.log(doubled); // [2, 4, 6, 8, 10]
「filter」を用いた検索方法
filter
メソッドは、テスト関数を満たすすべての要素からなる新しい配列を作成します。
これは、特定の条件に一致する要素のみを抽出したい場合に便利で、例えば次のコードは偶数のみを抽出します。
const numbers = [1, 2, 3, 4, 5];
const evens = numbers.filter(number => number % 2 === 0);
console.log(evens); // [2, 4]
配列の結合と操作のテクニック
JavaScriptでは、concat
メソッドやスプレッド構文を使用して、複数の配列を簡単に結合することができます。
これらのテクニックは複数のデータソースを一つにまとめたい場合に特に有用です。
配列の結合方法
concat
メソッドを使用すると、既存の配列に一つまたは複数の配列を結合して新しい配列を作成できます。
例えば、次のように使用します。
const array1 = [‘a’, ‘b’, ‘c’];
const array2 = [‘d’, ‘e’, ‘f’];
const combined = array1.concat(array2);
console.log(combined); // [‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’]
また、スプレッド構文を使用すると、より直感的に配列を結合することができます。
const array1 = [‘a’, ‘b’, ‘c’];
const array2 = [‘d’, ‘e’, ‘f’];
const combined = […array1, …array2];
console.log(combined); // [‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’]
これらの方法を使うことでJavaScriptでの配列操作の幅が広がり、より複雑なデータ構造の処理が可能になります。
JavaScriptでの配列操作をする際の注意点
JavaScriptで配列を扱う際には、その特性を理解し、適切な操作を行うことが重要です。
特に、配列は参照型であること要素の変更可能性、境界チェックの必要性、null
・undefined
・NaN
の扱い、そして配列の比較方法には注意が必要です。
これらのポイントを押さえることで、バグの少ない効率的なコードを書くことができます。
配列は参照型である
JavaScriptの配列は参照型で、配列を変数に割り当てるとその変数は配列のデータそのものではなく、データが格納されている場所への参照を保持することを意味します。
そのため、一つの配列に対して複数の変数が参照を持つ場合一方を変更すると他方にも影響が出ます。
let array1 = [1, 2, 3];
let array2 = array1;
array2.push(4);
console.log(array1); // [1, 2, 3, 4] と表示され、array1も変更される
この性質を理解していないと、予期せぬバグを引き起こす可能性があります。
配列の要素は変更可能である
JavaScriptの配列の要素は、デフォルトで変更可能です。しかし、Object.freeze()
メソッドを使用することで配列を不変にすることができ、これにより配列の要素を意図的に変更できなくなります。
let array = [1, 2, 3];
Object.freeze(array);
array.push(4); // TypeError: Cannot add property 4, object is not extensible
不変性を保証することで関数型プログラミングの原則に従い、想定外の挙動を減らすことができます。
配列の境界チェック
配列を操作する際には、境界チェックを怠らないことが重要です。
JavaScriptでは配列の範囲外のインデックスにアクセスしてもエラーが発生しませんが、undefined
が返されます。
これにより、意図しないバグが発生する可能性があります。
let array = [1, 2, 3];
console.log(array[5]); // undefined
配列の長さをチェックすることでこのような問題を避けることができます。
null・undefined・NaNの意味
配列内でnull
、undefined
、NaN
を扱う際には、それぞれの意味と挙動を正確に理解することが重要です。
これらの値は、配列内で特別な意味を持ちバグの原因となることがあります。
let array = [null, undefined, NaN];
console.log(array.includes(null)); // true
console.log(array.includes(undefined)); // true
console.log(array.includes(NaN)); // true
null
null
は、意図的に「値がない」または「空の値」を表すために使用され、変数が何も参照していないことを明示的に示すために使われることが多いです。
例えば、オブジェクトや配列が期待される場所で実際には何も存在しないことを示すためにnull
を割り当てることがあります。
let emptyValue = null;
console.log(emptyValue); // null
undefined
undefined
は、変数が宣言されたがまだ値が割り当てられていない状態を表します。
また、オブジェクトの存在しないプロパティにアクセスした場合にもundefined
が返されます。
これは変数やプロパティが意図的に「空」にされたわけではなく、単に値が存在しない状態を示します。
let uninitializedVariable;
console.log(uninitializedVariable); // undefined
let obj = {};console.log(obj.nonExistentProperty); // undefined
NaN
NaN
は「Not-a-Number」の略で、数値ではないことを表す特別な値で、数値演算の結果が無効または定義されていない場合にNaN
が生成されます。
例えば、数値以外のデータ型を数値に変換しようとした場合や数学的に不可能な計算を行った場合にNaN
が返されます。
console.log("abc" / 10); // NaN
console.log(Math.sqrt(-1)); // NaN
null
とundefined
はどちらも「値がない」ことを示しますが、null
は意図的な「空」の状態、undefined
は値がまだ割り当てられていない状態を示します。NaN
は数値演算が無効であることを示し、数値として扱うことができないことを意味します。
配列の比較
JavaScriptでは配列の比較を直接行うことはできません。
配列は参照型であるため同じ内容の配列であっても異なる参照を持つ場合、比較はfalse
を返します。
let array1 = [1, 2, 3];
let array2 = [1, 2, 3];
console.log(array1 === array2); // false
配列の内容を比較するには配列を文字列に変換するか要素ごとに比較する必要があります。
これにより、配列の内容が同じかどうかを正確に判断できます。
連想配列の使い方:初心者向けにわかりやすい解説
連想配列はキーと値のペアを使用してデータを格納することで、データの検索、更新、操作が容易になります。
ここでは連想配列の基本的な使い方とその操作に関する基本的なメソッドを紹介していきます。
連想配列とは:キーと値のペアを理解する
連想配列(JavaScriptではオブジェクトとも呼ばれます)は、キーと値のペアでデータを格納するデータ構造です。
キーは文字列またはシンボルであり、値は任意のデータ型(数値、文字列、配列、さらには他のオブジェクトも含む)を取ることができ、この柔軟性により複雑なデータ構造を簡単に表現できます。
let user = {
name: “John Doe”,
age: 30,
hobbies: [“reading”, “gaming”, “coding”]
};
上記の例では、user
オブジェクトにはname
、age
、hobbies
の3つのキーがあり、それぞれが異なるタイプの値を持っています。
このように連想配列を使用することで関連するデータを一つの変数にまとめて管理できます。
連想配列の操作:基本的なメソッドの使用法
JavaScriptでは、連想配列(オブジェクト)を操作するための多くのメソッドが提供されており、Object.keys()
、Object.values()
、Object.entries()
は、オブジェクトのキー、値、またはキーと値のペアを配列として取得するのに便利なメソッドです。
let user = {
name: “John Doe”,
age: 30,
hobbies: [“reading”, “gaming”, “coding”]
};
console.log(Object.keys(user)); // [“name”, “age”, “hobbies”]
console.log(Object.values(user)); // [“John Doe”, 30, [“reading”, “gaming”, “coding”]]
console.log(Object.entries(user)); // [[“name”, “John Doe”], [“age”, 30], [“hobbies”, [“reading”, “gaming”, “coding”]]]
これらのメソッドを使用することでオブジェクトの内容を簡単に列挙し、ループ処理での操作や特定の条件に基づくデータの抽出が可能になります。
例えばObject.keys()
を使用してオブジェクトのすべてのキーを取得し、それらをループして特定の操作を行うことができます。
連想配列を効果的に使用することで、JavaScriptプログラミングの柔軟性と表現力が大幅に向上します。
TypeScriptとJSONの利用:JavaScript配列操作の応用
JavaScriptの世界において、TypeScriptとJSONはデータ操作とアプリケーション開発の効率性を大幅に向上させる重要なツールです。
TypeScriptはJavaScriptに型システムを導入しており、コンパイル時の型チェックによってバグを減らせるので開発プロセスをスムーズにします。
一方、JSON(JavaScript Object Notation)は、軽量なデータ交換フォーマットとしてWebAPIの応答や設定ファイルなど多岐にわたる場面で利用されています。
ここではTypeScriptを利用した型安全な配列操作と、JSONを用いた配列データの交換方法について詳しく見ていきます。
TypeScriptによる型安全な配列操作
TypeScriptはJavaScriptに静的型付けの概念を導入することで、開発者がより安全にコードを書けるようにしてくれます。
配列操作においても、TypeScriptはその力を発揮しています。
例えば特定の型のみを要素とする配列を定義することができ、これにより予期しない型の値が配列に挿入されることを防ぎます。
let numbers: number[] = [1, 2, 3, 4, 5];
// numbers.push(“6”); // コンパイルエラー: 型 ‘string’ の引数を型 ‘number’ のパラメータに割り当てることはできません。
このようにTypeScriptを使用することで配列に対する操作が型安全になり、ランタイムエラーのリスクを減らすことができます。
また、ジェネリックスを利用することで再利用可能な型安全な関数やクラスを作成することも可能になります。
JSONと配列:データ交換の基本
JSONは、配列やオブジェクトなどのJavaScriptのデータ構造をテキスト形式で表現するための標準フォーマットです。
WebAPIとの通信でよく使用されるほか、設定ファイルやデータ保存のためのフォーマットとしても広く利用されています。
JavaScriptでは、JSON.stringify()
メソッドを使用してオブジェクトや配列をJSON文字列に変換できます。
逆に、JSON.parse()
メソッドを使用してJSON文字列をJavaScriptのオブジェクトや配列に変換することができます。
let users = [
{ name: “John”, age: 30 },
{ name: “Alice”, age: 25 }
];
let json = JSON.stringify(users);
console.log(json); // 文字列のJSON表現
let parsedUsers = JSON.parse(json);
console.log(parsedUsers); // オブジェクトの配列に戻る
このようにJSONを使用することでJavaScriptの配列やオブジェクトを簡単に文字列化し、異なるシステム間でのデータ交換を容易に行うことができます。
また、TypeScriptと組み合わせることでJSONから変換されたデータに対しても型安全性を確保することが可能になります。
まとめ:Javascriptの配列操作を覚えて効率的なデータ活用
JavaScriptの配列操作は、データを扱う上で非常に重要なスキルの1つです。
この記事では、配列の定義や初期化から始め、要素の追加や削除、検索方法、さらには配列の結合や操作のテクニックまで、具体的なサンプルコードを交えながら紹介してきました。
また、配列操作をする際の注意点や連想配列の使い方、さらにはTypeScriptやJSONを利用した配列操作の応用について触れました。
配列操作自体はJavaScriptだけに限らず全ての言語でも共通の考え方となるので、この機会に概念や使い方をしっかり覚えておくのをおすすめします。
プログラミング言語についてやその他システム開発に関する悩みや案件はJitera社の最も得意とする領域です。一度ご相談してみてはいかがでしょうか。