• JavaScriptの配列オブジェクトの使い方

    公開日:2017年08月31日 最終更新日:2021年12月24日

    JavaScriptの配列オブジェクトについて解説します。配列とは、複数のデーターを一つの変数に代入する事が出来ます。本コラムでは、配列の作成方法と格納した配列要素の取得方法について解説します。また、配列のインデックスを取得する「indexOf()メソッド」と「lastIndexOf()」の使い方に加えて、配列に値を追加する方法についても説明します。

    「JavaScript」の配列には、インデックスが"数値"である通常の「配列(Array)オブジェクト」と"文字列"を指定できる「連想配列オブジェクト」があります。「連想配列」については、「JavaScriptの連想配列を使ってみよう!」で解説していますのでご参考下さい。

    目次

    1. 配列オブジェクトの基本

    1.1. 配列とは?

    複数の「」を格納したデーター構造を「配列」と呼びます。
    プログラム中で使う「値」を格納する基本的な方法を確認してみましょう。

    「値」を格納(代入)する入れ物の事を「変数」と呼びます。また変数として宣言したプログラム中の名前の事を「変数名」と呼びます。

    ●変数へ値を代入する

    また、プログラム中で複数の値を扱う場合、1つの変数に対して、1つの値を代入する方法があります。

    ●1つの変数へ1つの値を代入する

    例えば、3種類の花の名前()を「変数」に代入する場合、「JavaScript」で記述すると以下の様になります。

    var flower1 = "サクラ";
    var flower2 = "チューリップ";
    var flower3 = "ヒマワリ";

    ●花の名前をそれぞれ変数ABCへ代入する

    変数名の「flower1」、「flower2」、「flower3」の各変数に対して、「サクラ」、「チューリップ」、「ヒマワリ」の値を代入しています。

    プログラム中で扱うデーターの数が少ない場合や、分類ごとにデーターを分けて使う必要がない場合はこの記述でも構いませんが、データーの数が多かったり、あるデーターのまとまりから特定の値を検索する場合などは、 「配列」を使う方がソースコードもシンプルで、効率よくデーターを扱う事ができます。

    配列オブジェクトを使うと、複数の値を一つの入れ物である「配列」に格納してプログラムの中で使う事ができます。

    ●配列へ値を代入する

    配列オブジェクトの作成方法については、次の節で見てみましょう。

    ▲ページトップへ戻る

    1.2. 配列オブジェクトを作成する方法

    まずは、配列オブジェクトを作成する一番シンプルなJavaScriptのプログラムを書いてみましょう。

    var flowers = ["サクラ", "チューリップ", "ヒマワリ"];

    通常の変数宣言と同じく、「var」に続き、任意の配列変数名を記述します。配列の値となるデーターをカンマで区切り、角括弧「 [ ] 」で括って変数に代入します。
    サンプルコードでは、作成された配列変数の「flowers」に、「"サクラ"」、「"チューリップ"」、「"ヒマワリ"」の3つの値が格納されています。

    ●配列「flowers」へ値を代入する

    配列変数に代入された値の事を「要素(elements)」とも呼びます。HTMLのタグの事を"要素"と言いますが、JavaScriptの要素とは異なりますので混同しないようにしましょう。flowersに格納された要素は、「サクラ」、「チューリップ」、「ヒマワリ」の3つになりますので、「要素数」は「」になります。
    また、配列オブジェクトに格納された、要素の位置を表す数字の事を「添字(そえじ)」または、「インデックス(index)」と呼びます。インデックスは必ずゼロ「0」から始まりますので、flowersの3つ目のインデックスは「」になります。プログラム中で、「インデックス」の数字と「要素数」の数字を混同しないようにしましょう。

    ▲ページトップへ戻る

    1.3. new演算子を使って配列オブジェクトを作成する方法

    new演算子」を使って、配列オブジェクトを作成する方法もあります。

    var flowers = new Array();
    flowers[0] = "サクラ";
    flowers[1] = "チューリップ";
    flowers[2] = "ヒマワリ";

    変数宣言時には、new Array()を代入して、空の配列オブジェクトを作成します。
    その後に、配列変数のそれぞれの要素に値を代入しています。

    配列を宣言する時に、Arrayの引数に要素を指定する事もできます。

    var flowers = new Array("サクラ", "チューリップ", "ヒマワリ");

    new 演算子を使わないで、角括弧「 [ ] 」を使う方法と機能的には一緒になります。

    ▲ページトップへ戻る

    2. 配列オブジェクトの値を取得する方法

    2.1. 配列の要素数を取得する - lengthプロパティ -

    配列オブジェクトの要素数を取得する方法を確認してみましょう。
    配列オブジェクトの「lengthプロパティ」を使って格納された配列要素数を取得します。「array021.html」をPC上の任意の場所に保存して下さい。ファイルの保存形式は「utf-8」にします。

    ●array021.html

    <!DOCTYPE html>
    <html lang="ja">
    <head>
    <meta charset="utf-8">
    <title>Introduction to JavaScript</title>
    </head>
    <body>
    <h1>JavaScript 入門</h1>
    <p>ボタンをクリックして下さい。</p>
    <button onclick="arrayFunction021()">クリック</button>
    <p id="array021">ここに配列の数が表示されます。</p>
    <script>
    function arrayFunction021() {
    //配列オブジェクトの作成
    var flowers = ["コスモス", "バラ", "アサガオ", "マーガレット"];
    //配列オブジェクトをのid属性が"array021"の段落に表示する
    var pelem021 = document.getElementById("array021");
    pelem021.innerHTML = "配列オブジェクトの要素の数は、" + flowers.length + " 個です。";
    }
    </script>
    </body>
    </html>

    "コスモス", "バラ", "アサガオ", "マーガレット"」の4つの値を持つ配列オブジェクトを作成します。
    flowers.length」で、格納された配列の要素数を取得する事ができます。

    以下にサンプルコードをそのまま埋め込んでいますので、ボタンをクリックして、配列の数が表示されるか確認してみて下さい。

    ボタンをクリックして下さい。

    ここに配列の数が表示されます。

    ボタンをクリックすると、配列変数「flowers」に格納された要素は4つありますので、「配列オブジェクトの要素の数は、4 個です。」と表示されます。

    ●配列 flowers の要素数

    ▲ページトップへ戻る

    2.2. 配列のインデックスを指定して値を取得する方法

    配列変数にインデックス(Index)を指定すると、配列の特定の位置に格納された値を取り出す事ができます。「array022.html」をPC上の任意の場所に保存して下さい。ファイルの保存形式は「utf-8」にします。

    ●array022.html

    <!DOCTYPE html>
    <html lang="ja">
    <head>
    <meta charset="utf-8">
    <title>Introduction to JavaScript</title>
    </head>
    <body>
    <h1>JavaScript 入門</h1>
    <p>ボタンをクリックして下さい。</p>
    <button onclick="arrayFunction022()">クリック</button>
    <p id="array022">ここに配列の内容が表示されます。</p>
    <script>
    function arrayFunction022() {
    //配列オブジェクトの作成
    var flowers = ["コスモス", "バラ", "アサガオ", "マーガレット"];

    //配列オブジェクトをのid属性が"array022"の段落に表示する
    var pelem022 = document.getElementById("array022");
    pelem022.innerHTML = "配列の3つめの要素は[ " + flowers[2] + " ]です。";
    }
    </script>
    </body>
    </html>

    配列の3番目に格納された「アサガオ」を取得する場合のサンプルコードです。
    配列のインデックス(index)は「0」から始まりまることを頭に置いておきましょう。配列の3番目の値を取得したい場合は、インデックスに「2」を指定します。
    サンプルコードでは、「flowers[2]」を指定する事で、3番目の値である「アサガオ」を取得してブラウザーに表示しています。

    サンプルコードのボタンをクリックして、動作を確認してみて下さい。

    ボタンをクリックして下さい。

    ここに配列の内容が表示されます。

    ボタンをクリックすると、「配列の3つめの要素は[ アサガオ ]です。」と表示されます。

    ●要素をインデックスで取得する

    ▲ページトップへ戻る

    2.3. 配列の先頭の値を取得する方法

    配列に格納された先頭の値を取得するには、単純に配列変数のインデックスに「0」を指定します。

    ●array023.html

    <!DOCTYPE html>
    <html lang="ja">
    <head>
    <meta charset="utf-8">
    <title>Introduction to JavaScript</title>
    </head>
    <body>
    <h1>JavaScript 入門</h1>
    <p>ボタンをクリックして下さい。</p>
    <button onclick="arrayFunction023()">クリック</button>
    <p id="array023">ここに配列の内容が表示されます。</p>
    <script>
    function arrayFunction023() {
    //配列オブジェクトの作成
    var flowers = ["コスモス", "バラ", "アサガオ", "マーガレット"];

    //配列オブジェクトをのid属性が"array023"の段落に表示する
    var pelem023 = document.getElementById("array023");
    pelem023.innerHTML = "配列の1つめの要素は[ " + flowers[0] + " ]です。";
    }
    </script>
    </body>
    </html>

    配列変数「flowers」に格納された、1つ目の値である「コスモス」を取得する場合は、配列の0番目、「flowers[0]」を指定します。

    ボタンをクリックして下さい。

    ここに配列の内容が表示されます。

    ボタンをクリックすると、「配列の1つめの要素は[ コスモス ]です。」と表示されます。

    ●要素の最初の値を取得する

    ▲ページトップへ戻る

    2.4. 配列の最後の値を取得する方法

    配列オブジェクトに格納された最後の値を取得する場合は、配列要素の数を取得するlengthプロパティを使って値を取得します。

    ●array024.html

    <!DOCTYPE html>
    <html lang="ja">
    <head>
    <meta charset="utf-8">
    <title>Introduction to JavaScript</title>
    </head>
    <body>
    <h1>JavaScript 入門</h1>
    <p>ボタンをクリックして下さい。</p>
    <button onclick="arrayFunction024()">クリック</button>
    <p id="array024">ここに配列の内容が表示されます。</p>
    <script>
    function arrayFunction024() {
    //配列オブジェクトの作成
    var flowers = ["コスモス", "バラ", "アサガオ", "マーガレット"];

    //配列オブジェクトをのid属性が"array024"の段落に表示する
    var pelem024 = document.getElementById("array024");
    pelem024.innerHTML = "一番最後の要素は[ " + flowers[flowers.length - 1] + " ]です。";
    }
    </script>
    </body>
    </html>

    配列のインデックス(Index)は、「0」から始まりますが、配列に4つの値が格納されている場合、最後のインデックスの数字は「3」になります。
    配列オブジェクトの「lengthプロパティ」で取得する値は「4」になるので、「flowers.length - 1」、つまり「4-1=3」を配列変数のインデックスに指定すると最後の値である「マーガレット」を取得する事ができます。

    ボタンをクリックして下さい。

    ここに配列の内容が表示されます。

    ボタンをクリックすると、「一番最後の要素は[ マーガレット ]です。」と表示されます。

    ●要素の最後の値を取得する

    ▲ページトップへ戻る

    2.5. 配列の全ての値を取得する方法

    配列オブジェクトの全ての値を表示する方法はいくつかありますが、一番シンプルな方法をご紹介しましょう。

    ●array025.html

    <!DOCTYPE html>
    <html lang="ja">
    <head>
    <meta charset="utf-8">
    <title>Introduction to JavaScript</title>
    </head>
    <body>
    <h1>JavaScript 入門</h1>
    <p>ボタンをクリックして下さい。</p>
    <button onclick="arrayFunction025()">クリック</button>
    <p id="array025">ここに配列の内容が表示されます。</p>
    <script>
    function arrayFunction025() {
    //配列オブジェクトの作成
    var flowers = ["コスモス", "バラ", "アサガオ", "マーガレット"];
    //配列オブジェクトをのid属性が"array025"の段落に表示する
    var pelem025 = document.getElementById("array025");
    pelem025.innerHTML = "配列オブジェクトの中身は、<br>[ " + flowers + " ]です。";
    }
    </script>
    </body>
    </html>

    配列オブジェクトの宣言もシンプルな方を記述しています。
    配列変数の「flowers」に格納された全ての要素をブラウザーに表示するには、単純に変数名をインデックスなしで指定します。
    ブラウザーには、配列の全ての値「コスモス,バラ,アサガオ,マーガレット 」が表示されます。

    ボタンをクリックして下さい。

    ここに配列の内容が表示されます。

    ボタンをクリックすると、「配列オブジェクトの中身は、[ コスモス,バラ,アサガオ,マーガレット ]です。」と表示されます。

    ▲ページトップへ戻る

    3. 配列要素のインデックスを取得する方法

    3.1. 配列の最初に格納された要素のインデックスを取得する方法 - indexOf() -

    配列に格納された要素(値)を取得する他に、要素のインデックスを取得する事もできます。

    ●array031.html

    <!DOCTYPE html>
    <html lang="ja">
    <head>
    <meta charset="utf-8">
    <title>Introduction to JavaScript</title>
    </head>
    <body>
    <h1>JavaScript 入門</h1>
    <p>ボタンをクリックして下さい。</p>
    <button onclick="arrayFunction031()">クリック</button>
    <p id="array031">ここに配列要素のインデックスが表示されます。</p>
    <script>
    function arrayFunction031() {
    //配列オブジェクトの作成
    var flowers = ["コスモス", "バラ", "アサガオ", "マーガレット"];

    //配列オブジェクトをのid属性が"array031"の段落に表示する
    var pelem031 = document.getElementById("array031");
    pelem031.innerHTML = "アサガオのインデックスは、[ " + flowers.indexOf("アサガオ") + " ]です。";
    }
    </script>
    </body>
    </html>

    配列オブジェクトの要素からインデックスを取得するには、「indexOf()メソッド」を使います。
    flowers.indexOf("アサガオ")」で、配列の最初から要素を検索します。一番最初に格納されている3番目の要素「アサガオ」のインデックスを取得する事ができます。

    ボタンをクリックして下さい。

    ここに配列要素のインデックスが表示されます。

    ボタンをクリックすると、「アサガオのインデックスは、[ 2 ]です。」と表示されます。

    ●要素のインデックスを取得する

    ▲ページトップへ戻る

    3.2. 配列の最後に格納された要素のインデックスを取得する方法 - lastIndexOf() -

    lastIndexOf()メソッド」を使うと、要素を配列の最後から検索し、指定した要素のインデックスを取得する事ができます。

    ●array032.html

    <!DOCTYPE html>
    <html lang="ja">
    <head>
    <meta charset="utf-8">
    <title>Introduction to JavaScript</title>
    </head>
    <body>
    <h1>JavaScript 入門</h1>
    <p>ボタンをクリックして下さい。</p>
    <button onclick="arrayFunction032()">クリック</button>
    <p id="array032">ここに配列要素のインデックスが表示されます。</p>
    <script>
    function arrayFunction032() {
    //配列オブジェクトの作成
    var flowers = ["コスモス", "バラ", "アサガオ", "マーガレット", "ヒマワリ", "アサガオ"];

    //配列オブジェクトをのid属性が"array032"の段落に表示する
    var pelem032 = document.getElementById("array032");
    pelem032.innerHTML = "アサガオのインデックスは、<br>[ "
    + flowers.lastIndexOf("アサガオ") + " ]です。";
    }
    </script>
    </body>
    </html>

    要素が1つの場合は、lastIndexOf()メソッドで取得する値は変わりませんが、複数ある場合は結果が異なります。
    配列変数「flowers」に格納された要素

    "コスモス", "バラ", "アサガオ", "マーガレット", "ヒマワリ", "アサガオ"

    の内、「アサガオ」のインデックスをlastIndexOf()メソッドで取得する例を見てみましょう。
    配列に格納された二つの要素「アサガオ」のインデックスは「2」と「5」になります。 「flowers.lastIndexOf("アサガオ")」では、配列の最後から検索して一番最初に見つかった、6番目の配列のインデックス「5」が返されます。

    ボタンをクリックして下さい。

    ここに配列要素のインデックスが表示されます。

    ボタンをクリックすると、「アサガオのインデックスは、[ 5 ]です。」と表示されます。

    ●最後に格納された要素のインデックスを取得する

    ▲ページトップへ戻る

    4. 配列オブジェクトに要素を追加する

    作成された配列に要素を追加する方法はいくつかありますが、まずは一番シンプルな方法を確認してみましょう。 「array041.html」をPC上の任意の場所に保存して下さい。ファイルの保存形式は「utf-8」にします。

    ●array041.html

    <!DOCTYPE html>
    <html lang="ja">
    <head>
    <meta charset="utf-8">
    <title>Introduction to JavaScript</title>
    </head>
    <body>
    <h1>JavaScript 入門</h1>
    <p>ボタンをクリックして下さい。</p>
    <button onclick="arrayFunction041()">クリック</button>
    <p id="array041">ここに配列要素が表示されます。</p>
    <script>
    function arrayFunction041() {
    //配列オブジェクトの作成
    var flowers = ["コスモス", "アサガオ", "マーガレット"];
    //配列オブジェクトの最後に要素を追加する
    flowers[flowers.length] = "バラ";
    //配列オブジェクトをのid属性が"array041"の段落に表示する
    var pelem041 = document.getElementById("array041");
    pelem041.innerHTML = "配列要素の最後に「バラ」を追加しました。<br> "
    + "flowers:[" + flowers + "]";
    }
    </script>
    </body>
    </html>

    配列オブジェクトの「flowers」には、3つの要素が入っています。その最後の要素に「"バラ"」を追加してみます。追加方法は単純に最後の配列のインデックスを指定して、値を代入するだけです。インデックス番号の取得はシンプルに「3」と指定してもよいのですが、今回は、配列の要素数を取得する「flowers.length」を使いました。

    ボタンをクリックして下さい。

    ここに配列要素が表示されます。

    ボタンをクリックすると、配列の最後に追加した「"バラ"」を含む配列全ての「flowers:[コスモス,アサガオ,マーガレット,バラ]」が表示されます。

    ●配列の最後に要素を追加する

    ▲ページトップへ戻る

    【関連記事】「JavaScriptの配列オブジェクトの追加と削除
    【関連記事】「JavaScriptの連想配列を使ってみよう!

    JavaScriptのスキルが活かせる最新求人情報をチェック!

    月額単価80万円〜90万円
    勤務地 フルリモート
    月額単価70万円〜80万円
    勤務地 東京都 港区
    月額単価60万円〜70万円
    勤務地 東京都 港区
    勤務地 フルリモート
    月額単価70万円〜80万円
    勤務地 東京都 中央区

    フリーランスの方でこのようなお悩みありませんか?

    • 定期的に案件を紹介してほしい
    • 完全フルリモートワークや、週1出勤など、働き方を選びたい
    • 単価交渉など営業周りが苦手なので、誰かに任せたい

    プロエンジニアにお任せください!

    プロエンジニアはほとんどEND直案件!高額単価案件ならお任せください。
    完全フルリモートや、週1出勤など、希望に合わせた働き方ができる案件を多数ご用意しています。
    単価や契約交渉などは弊社キャリアコンサルタントに全てお任せください。

    無料登録して、あなたの希望に合った案件をチェック!

    簡単60秒!無料登録はこちらから

    おすすめ記事

  • ピックアップ

    フリーランス

    【Ruby/TypeScript】フルスタックエンジニア★クラウドWAFプロダクトの開発

    自社サイバーセキュリティプロダクトの開発から販売・運用・保守まで 一貫してサービスを提供している...

    月額単価:80万円〜90万円

    フリーランス

    【PHP(Laravel)/JavaScript(Vue.js)】フルスタックエンジニア★求人WEBサービスのエンハンス開発

    同社はWebシステムやスマフォアプリ開発を得意とする受託開発企業です。 今回は求人WEBサービスの保守...

    月額単価:70万円〜80万円

    フリーランス

    【PHP】フルスタックエンジニア★保育・教育施設向け業務支援サービスの開発

    保育・教育施設向けICTシステムやSaaSを展開している企業にて、当システムの開発支援業務をご担当いただ...

    月額単価:60万円〜70万円

    フリーランス

    【TypeScript/React】フルスタックエンジニア★入札資格情報サービスの機能・保守開発

    クラウドソーシング事業やBPO事業を展開している企業にて、官公庁・自治体等の入札資格情報を管理できる...

    月額単価:70万円〜80万円

SCROLL TOP