お寿司か焼き肉食べたい

まじめな事からしょーもない事まで
めにゅーを開く(投げやり)

配列が終わったと思った?残念!配列ちゃんでした!

前回は変数と配列の違いと、配列の種類とかにしか話していませんでした。
詳細の使い方を説明しなかったんですね。
てなわけで、使い方、やっていきます。

配列はねぇ。配列ってしなきゃいけないんだよ

お気づきがどうかわかりませんが、実は前回の例文すべてに入っていた魔法の言葉が存在していたのです。
これがないと【配列】として認識してくれないのデス。

$(function(){
 var test = new Array();
});

配列の中に何かブチこんでますね。
これを書くことによって、変数は配列へと進化するのです。
とりあえず、必須なんだ!(*^◯^*) って事です。
かかなければ変数のままなので

この配列宣言がまーためんどくさいんですわ。

二次元以降の配列にする時は、都度、配列宣言をしなければいけません。
とてつもなくややこしい事を言いますが

【配列が生成された時(デフォルト)は変数扱い】

さぁ、雲行きが怪しくなってきたぞ

これ以上掘り下げてもキリがありません。
配列の次元を増やす場合は、必ずその場所に new Array(); を最初に入れる
という事を覚えておいてください。

ちなみに

配列宣言してなくて、配列のようにデータを入れて配列のようにデータ表示させたらどうなる?
を少しだけ。

$(function(){
 var test = new Array();
     test2 = "";

 // 配列宣言済み。ふつうに入れてみる
 test[0]    = 'うなぎ';

 // 配列未宣言。ふつうに入れてみる
 test[0][1] = 'えー、球審の白井です(半切れ)';

 // ただの変数に配列のように入れてみる
 test2[0] = 'すいません、彼、実はゴリラなんですよ。';

 // 実行した時と結果

 alert(test[0]);     // うなぎ が出る
 alert(test[0][1]); // な が出る
 alert(test2[0]);   // 空(undefined) が出る
});

最初のalert

さて、順番に。
最初のalertは、もうそのまま思い描いたものが出ます。
特に特記事項はありません。

2番目のalert




はい?

二番目のやつは 「えー、球審の白井です(半切れ)」であり、【な】なんて含まれてないんだけど
みたいな感じで非常に困ってしまいます。
で、これは何なのかと申しますとですね。はい。

変数名に続けて中括弧入れて中に数字を入れると、その数字は文字出現順番番号とみなされて、その番号にあった文字列を出してくる。

( ゚д゚)?  (゚д゚ ≡ ゚д゚)??  (゚д゚)ハァ?

まぁ、難しい言葉で書いていますが、以下のような感じです。

  • 1.test[0]には うなぎ が入っています。
  • 2.test[0][1]に文字列を入れようとしますが、配列ではないので入りませんでした。無かったことにします(ジーザス)
  • 3.test[0][1]を出そうとしました。
    でも。test[0][1]は配列じゃないんですね…
    って事は、test[0]に入っている文字列の 【2番目】を出すんですね?わかりました。

ってやりとりが行われていました。
だから 【うなぎ】の【2番目の文字】の【な】 が出たんですね。

3番目のalert

こいつも2番目の変数の中の文字を抜き出そうとしています。
だがしかし、悲しい事に、test2には文字列が何も入っていません。
なので、空で出てしまうのです。
ちなみに、何かある場合でも文字数を超えると空で帰ってきます。

配列にデータを入れる方法

例とかでいっぱい書いてますが、基本的には変数と同じように
イコールを境に右側のものを左側に入れる事ができます。
その他にもいくつかあります。

基本的な代入

$(function(){
 var test = new Array();

 // 変数と同じ
 test[0]    = 'うなぎ';
});

特に特記事項はないです。
変数と同じですね。

変数宣言と同時に入れる(通常配列)

$(function(){
 var test = ['a','b','c'];
});

new Array();をすっ飛ばしてやってます
通常配列のキー名は0スタートですので、0番目から順番にデータが格納されます。

変数宣言と同時に入れる(連想配列)

$(function(){
 var test = {'str1':'d','str2':'e','str3':'f'};
});

これも new Array() をすっ飛ばしています。
{}のほうを使っているのは【オブジェクト】だからです。
まぁそう書いてますが、そういうものなのです。という認識でひとまずいてください。

関数を使った代入(通常配列)

$(function(){
 var test = new Array();
 test.push('テスト');
 // この時点で、test[0]にデータが入る
});

【配列名】.push(【代入したいデータ】)
と書くことで、配列のキーの最後の番号の所に順番に入れていきます。
何もなければ0からですし、途中まで入っていた場合は、その続きからです。
ちなみに空き番があった場合ですが、それは無視されて
【最大値の次の番号】から入っていきます。
動作は以下です。

$(function(){
 var test = new Array();

 test[0] = "ああああ";
 test[2] = "いいいい";
 test.push('うううう');

 alert(test[0]); // ああああ
 alert(test[1]); // 空
 alert(test[2]); // いいいい
 alert(test[3]); // うううう
});

キー名を指定しない代入(通常配列)

$(function(){
 var test = new Array();
 test[] = 'あああああ';
 // この時点で、test[0]にデータが入る
});

push関数と同じ動作になります。
それ以外の特記事項はありません。

というわけで

変数と配列のお勉強をしてきました。
まぁここもある程度までいけば当たり前に使う日がきっと来ます。
軽くおさらいをしてから練習問題にいきましょう。

変数と配列のまとめ

  • 変数、配列はデータの保管場所である
  • 変数は単一データ、配列は複数データを入れる時に使い分ける
  • 先頭に数字を付けることはできない。また、予約語も使う事ができない
  • 大文字小文字は区別する
  • 配列のキー名は数字だけでもOK 文字列として分かりやすい名前を付けることができる
  • 配列のキーは永遠と増やす事ができてる
  • 配列のキーを増やす時は、都度配列の宣言をしなくてはいけない。

練習問題的な


それではここから、クエスチョン!
  • 1:適当な変数を作り文字列データを入れて、それをalertで表示してください。
  • 2:1次元配列を作り、連想配列としてキー名を構築し、それをalertで表示してください。
  • 3:2次元配列を作り、push関数を使用しデータを入れた後、それをalertで表示してください。