JavaScriptの配列
JavaScriptにも他のプログラミング言語の同様に配列を装備しています。 ただし、JavaScriptの配列はCやJavaの様に最初に長さや型が決定される配列では無く、その柔軟さはむしろリストに近いでしょう実態は配列Objectであり、pushやイテレーターなど様々なプロパティや機能が用意されています。
配列の宣言
JavaScriptの配列の宣言方法は主に2つあります。 配列リテラルを使う方法と、Arrayコンストラクタで生成する方法です。 以下はどちらも同じ配列になります。//配列リテラル記法 var nums = [10, 20, 30]; document.writeln(nums); //10,20,30 //Arrayコンストラクタ var nums = new Array(10, 20, 30); document.writeln(nums); //10,20,30
// 10,20,30の3つの要素を持つ配列 var nums = new Array(10, 20, 30); document.writeln(nums); //10,20,30 // 10つの空要素を持つ配列 var nums = new Array(10); document.writeln(nums); // ,,,,,,,,,
//要素は決定していなが100の長さの配列を確保しています。 var nums = new Array(100);
var nums = new Array(0.1); //少数を使用しているSyntexError var nums = new Array(-1); //マイナスの整数SyntexError
// 10の要素を確保しようとするがSyntaxError var arr[10] = new Array();
var nums[4] = 5; //SyntaxError いきなり要素に代入している var nums = []; //まず宣言 var nums[4] = 5; // 前に配列宣言されていれば何番目に入れようとも可能
配列の要素
JavaScriptの配列は柔軟なので、要素数や型を気にせず入れることが出来ます。var arr = [10, "str", true, function(arg) {}, null, undefined, {}]; console.log(arr); //[10, "str", true, function, null, undefined, Object]
配列要素のアクセス
配列要素へのアクセスには、ブラケット演算子[]の0から数えた要素の番号を添え字として指定します。 これはCやJavaなど他の言語と変わりないので特に違和感ないでしょう。var nums = [10, 20, 30]; document.writeln(nums[1]); // 20が表示される
var nums = [10, 20, 30]; document.writeln("length = " + nums.length); for(var i = 0; i < nums.length; i++) { document.writeln(nums[i]); }
length = 3
10
20
30
配列とオブジェクト
JavaScriptの配列の実態はArrayオブジェクトです。ですからオブジェクトとしてプロパティを持ちメソッドを使用できます。var arr = ["one", "two", "three"]; document.writeln(arr.toString()); //文字列として表示 document.writeln(arr); //内部でtoStringメソッドが呼び出される document.writeln("length = " + arr.length); //lengthプロパティで個数を出力 document.writeln(typeof arr);
one,two,three
one,two,three
length = 3
object
配列を出力させると自動的にtoStringメソッドが使用され、文字列として表示されます。 typeofでタイプを調べるとobjectが表示されるように実態はオブジェクトです。
lengthプロパティは特殊なプロパティで配列の個数を出力し配列の要素を追加すれば自動的に増えます。
arr.push("four"); //pushプロパティによる追加 document.writeln(arr); document.writeln("length = " + arr.length); arr[4] = "five"; document.writeln(arr); document.writeln("length = " + arr.length);
one,two,three,four
length = 4
one,two,three,four,five
length = 5
以上は直感的にも理解できるでしょう。 では飛び値の要素を追加したりlength値自体に代入するとどうなるでしょうか?
arr[9] = "ten"; document.writeln(arr); document.writeln("length = " + arr.length); document.writeln(arr[5]); arr.length = 3; document.writeln(arr); document.writeln("length = " + arr.length);
one,two,three,four,five,,,,,ten
length = 10
undefined
one,two,three
length = 3
このように飛び値までの要素はundefinedで埋められ配列の長さは与えられた数まで伸びます。 そしてlength自体に代入するとその長さまでの配列になります。lengthプロパティは単に配列と紐付けられた変数に過ぎないということが分かります。
0 件のコメント:
コメントを投稿