読み込み中...

JavaScriptの配列宣言を極める最強の6つの方法

JavaScript配列宣言のサンプルコード JS
この記事は約10分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

本記事のサンプルコードを活用して機能追加、目的を達成できるように作ってありますので、是非ご活用ください。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を満たす現役のプログラマチームによって監修されています。

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

JavaScriptは、Web開発においてHTML/CSSと組み合わせる際に絶対に欠かせないプログラミング言語です。

特に、動的なWebサイトやWebアプリケーションを構築する際には、JavaScriptの知識が不可欠です。

今回は、JavaScriptの基本的な機能の1つである配列宣言について、初心者の方にもわかりやすく解説していきたいと思います。

○JavaScriptとは

JavaScriptは、Webブラウザ上で動作するプログラミング言語で、HTMLやCSSと組み合わせることで、インタラクティブなWebサイトを作成することができます。

JavaScriptを使用すると、ボタンのクリックやフォームの入力など、ユーザーのアクションに応じてWebページの内容を動的に変更したり、サーバーとの通信を行ったりすることが可能です。

○配列宣言の重要性

JavaScriptで複雑なWebアプリケーションを開発する際、データの管理は非常に重要です。

特に、同じ種類のデータを複数持つ場合、配列を使用することで効率的にデータを扱うことができます。

配列を適切に宣言し、操作することは、JavaScriptを使いこなす上で必須のスキルと言えるでしょう。

●基本的な配列宣言の方法

JavaScriptで配列を宣言する方法は主に2つあります。

1つは配列リテラルを使う方法、もう1つはArrayコンストラクタを使う方法です。

それぞれの方法について、サンプルコードを交えて解説していきます。

○サンプルコード1:配列リテラルを使った宣言

配列リテラルを使って配列を宣言する方法は、次のようになります。

const fruits = ['apple', 'banana', 'orange'];
console.log(fruits);

実行結果としては、下記のようにコンソールに配列の内容が表示されます。

['apple', 'banana', 'orange']

この方法では、大括弧[]内に配列の要素をカンマで区切って記述します。

シンプルで読みやすいため、多くの開発者に好まれる記法です。

○サンプルコード2:Arrayコンストラクタを使った宣言

Arrayコンストラクタを使って配列を宣言する方法は、次のようになります。

const colors = new Array('red', 'green', 'blue');
console.log(colors);

実行結果としては、下記のようにコンソールに配列の内容が表示されます。

['red', 'green', 'blue']

Arrayコンストラクタを使う場合、newキーワードを使ってArrayオブジェクトを生成し、その引数に配列の要素を渡します。

配列リテラルを使う方法に比べると若干冗長になりますが、動的に配列を生成する必要がある場合に便利です。

●高度な配列操作

配列を宣言したら、次はその配列を操作する方法を理解する必要があります。

ここでは、配列操作の中でもよく使われるmap、filter、reduceメソッドについて解説します。

○サンプルコード3:mapとfilterを使った配列操作

mapメソッドは、配列の各要素に対して指定された関数を適用し、その結果を新しい配列として返します。

一方、filterメソッドは、配列の各要素に対して指定された条件を満たす要素だけを抽出し、新しい配列として返します。

const numbers = [1, 2, 3, 4, 5];

// mapメソッドで各要素を2倍にする
const doubledNumbers = numbers.map(num => num * 2);
console.log(doubledNumbers);

// filterメソッドで偶数だけを抽出する
const evenNumbers = numbers.filter(num => num % 2 === 0);
console.log(evenNumbers);

実行結果としては、下記のようにコンソールに新しい配列の内容が表示されます。

[2, 4, 6, 8, 10]
[2, 4]

mapメソッドとfilterメソッドを使いこなすことで、配列の要素を自在に加工し、必要なデータだけを取り出すことができます。

○サンプルコード4:reduceを使った配列操作

reduceメソッドは、配列の要素を1つの値に集約するための強力なメソッドです。

例えば、配列の合計値を求めたり、要素の最大値を見つけたりするのに便利です。

const numbers = [1, 2, 3, 4, 5];

// reduceメソッドで合計値を計算する
const sum = numbers.reduce((acc, cur) => acc + cur, 0);
console.log(sum);

// reduceメソッドで最大値を見つける
const max = numbers.reduce((acc, cur) => Math.max(acc, cur), -Infinity);
console.log(max);

実行結果としては、下記のようにコンソールに集約された値が表示されます。

15
5

reduceメソッドは、配列の要素を順番に処理し、アキュムレータ(acc)と現在の要素(cur)を引数に取る関数を適用します。

初期値を指定することもでき、配列の要素を柔軟に集約できます。

●配列操作のよくあるエラーと対処法

配列を操作する際には、うっかりミスでエラーが発生することがあります。

ここでは、よくあるエラーとその対処法を見ていきます。

○不正なインデックスへのアクセス

配列のインデックスは0から始まるため、配列の長さを超えるインデックスにアクセスしようとするとundefinedが返ってきます。

const fruits = ['apple', 'banana'];
console.log(fruits[2]); // undefined

このようなエラーを防ぐには、配列の長さをチェックしてからアクセスするようにします。

const fruits = ['apple', 'banana'];
if (fruits.length > 2) {
  console.log(fruits[2]);
} else {
  console.log('インデックス2は存在しません');
}

○型不一致によるエラー

配列の要素は、複数の型を混在させることができます。

しかし、期待する型と実際の型が異なる場合、エラーが発生することがあります。

const mixedArray = ['apple', 1, true];
console.log(mixedArray[1].toUpperCase()); // TypeError: mixedArray[1].toUpperCase is not a function

このようなエラーを防ぐには、要素の型をチェックしてから処理を行うようにしてみましょう。

const mixedArray = ['apple', 1, true];
if (typeof mixedArray[1] === 'string') {
  console.log(mixedArray[1].toUpperCase());
} else {
  console.log('要素1は文字列ではありません');
}

○破壊的メソッドと非破壊的メソッドの違い

配列を操作するメソッドには、元の配列を変更する破壊的メソッドと、新しい配列を返す非破壊的メソッドがあります。

これらを混同すると、予期せぬ結果になることがあります。

const numbers = [1, 2, 3];
const newNumbers = numbers.reverse();
console.log(numbers); // [3, 2, 1]
console.log(newNumbers); // [3, 2, 1]

非破壊的メソッドを使いたい場合は、元の配列をコピーしてから操作を行うようにします。

const numbers = [1, 2, 3];
const newNumbers = [...numbers].reverse();
console.log(numbers); // [1, 2, 3]
console.log(newNumbers); // [3, 2, 1]

●配列宣言の応用例

ここまでの内容を踏まえて、配列宣言のより実践的な応用例を見ていきましょう。

○サンプルコード5:複数形式のデータを含む配列

配列の要素には、オブジェクトや他の配列を含めることができます。

これを利用して、複雑なデータ構造を表現できます。

const users = [
  { name: '山田', age: 25, hobbies: ['読書', '旅行'] },
  { name: '鈴木', age: 30, hobbies: ['スポーツ', '料理'] },
  { name: '佐藤', age: 20, hobbies: ['音楽', 'ゲーム'] }
];

for (const user of users) {
  console.log(`${user.name}さん(${user.age}歳)の趣味は${user.hobbies.join('と')}です。`);
}

実行結果としては、下記のようにコンソールにユーザー情報が表示されます。

山田さん(25歳)の趣味は読書と旅行です。
鈴木さん(30歳)の趣味はスポーツと料理です。
佐藤さん(20歳)の趣味は音楽とゲームです。

このように、配列の要素にオブジェクトや他の配列を含めることで、関連するデータをまとめて管理することができます。

○サンプルコード6:動的な配列宣言と更新

配列は動的に宣言したり、要素を追加・削除したりすることができます。

この特性を生かして、データの動的な管理が可能です。

let numbers = [];

for (let i = 1; i <= 5; i++) {
  numbers.push(i);
}
console.log(numbers); // [1, 2, 3, 4, 5]

numbers.splice(2, 1);
console.log(numbers); // [1, 2, 4, 5]

numbers = numbers.map(num => num * 2);
console.log(numbers); // [2, 4, 8, 10]

実行結果としては、下記のようにコンソールに配列の内容が表示されます。

[1, 2, 3, 4, 5]
[1, 2, 4, 5]  
[2, 4, 8, 10]

pushメソッドで要素を追加し、spliceメソッドで要素を削除しています。また、mapメソッドを使って配列全体を更新しています。

このように、配列を動的に操作することで、柔軟なデータ管理が可能になります。

まとめ

今回は、JavaScriptの配列宣言について、基本的な方法から応用例まで幅広く解説しました。

配列は、同じ種類のデータを効率的に管理するために欠かせない機能です。

配列リテラルやArrayコンストラクタを使った宣言方法、map、filter、reduceなどの高度な操作、よくあるエラーとその対処法など、配列に関する知識を身につけることで、JavaScriptでの開発がより円滑に進められるでしょう。

JavaScriptの配列は、シンプルながらも奥深い機能です。

今回の内容を出発点として、さまざまな配列操作を習得し、より洗練されたコードを書けるようになることを目指しましょう。

配列を自在に操れるようになれば、JavaScriptでの開発の幅が大きく広がるはずです。

ぜひ、配列を活用して魅力的なWebアプリケーションを作ってみてください。

Happy coding!