kosukeコメントをどうぞTweetTweet前回は、関数自体の演算と状態を持つ関数である関数とクロージャについてまとめた。JavaScriptのデータ処理について解説する。配列は順序のある要素の集まりである。JavaScriptの配列の長さは可変である。JavaScriptの配列はオブジェクトだからである。JavaScriptの配列JavaScriptの配列はリテラル表記とnew式(後述)の2つの方法で生成できる。配列リテラルはブラケット([])の中に配列要素をカンマで区切って並べる。要素がない配列は長さゼロの配列である。要素には任意の値やオブジェクト参照を指定できる。配列の要素アクセス配列の要素のアクセスはブラケット演算子([]演算子)で行う。[]内には添字の数値を書く。要素のない添字を指定するとundefined値になる。配列の長さ配列とドット演算子に続いてlengthを書くと配列の長さを得られる。配列の長さは配列の最後尾の要素のインデックスに1を足した数である。配列の長さの上限は2の32乗である。要素には何でも指定できるので配列の指定もできる(多次元配列)。配列はオブジェクトJavaScriptの配列はオブジェクトである。内部的にはArrayオブジェクト(Arrayクラス)のインスタンスオブジェクトである。このためnew式でArrayコンストラクタを呼び出す配列生成も可能である。ArrayクラスArrayクラスは配列オブジェクトのためのクラスである。配列オブジェクトの意味オブジェクトリテラル式で生成したオブジェクトは配列ではない。1つはlengthプロパティのenumerable属性属性で、もう1つの違いは配列のlengthプロパティ値の自動増分である。配列のイディオムソート:sortメソッドで配列の要素値のソートができる。引数なしでsortメソッドを呼ぶと文字列としてソートする。文字列としてのソートはUnicodeのコードポイント値の大小比較である配列を使う文字列生成:pushとjoinを組み合わせた文字列生成は、部分文字列を配列にpushして最後にjoinで1つの文字列に連結する配列のコピー:concatメソッドもしくはsliceメソッドを使う要素の削除:delete演算を使う。削除した要素の部分を詰めた配列にするにはspliceメソッドを使うフィルタ処理:forEachメソッドを使う配列の内部JavaScriptの配列の実体はオブジェクトなので素朴な実装では連続したメモリ領域にならない。JavaScript以外の多くの言語の配列は、暗黙に連続したメモリ領域を意味する。この暗黙の内部実装で、効率的なメモリ使用と高速な要素アクセスが期待できる。配列風のオブジェクトJavaScriptには配列ではない配列風オブジェクトが存在する。有名なのは関数の実引数にアクセスできるargumentsオブジェクトである。DOMのAPIには配列風のオブジェクトが多くある。イテレータイテレータは繰り返しのみに働きを特化したオブジェクトである。細部を切り捨て、ある働きのみに機能を限定することを抽象化と呼ぶ。イテレータは繰り返しを抽象化した言語機能である。ジェネレータジェネレータはイテレータと同じくJavaScript独自拡張で、繰り返しのための言語機能である。ジェネレータは見た目は普通の関数である。ジェネレータと普通の関数の違いは内部でyield呼び出しをしているか否かのみである。Comprehensions)はジェネレータで配列を生成できる機能である。これもJavaScript独自拡張である。Notation)はJavaScriptのリテラル表記をベースにしたデータフォーマット形式である。RFC4627が仕様である。JSONは4つの基本型と2つの構造化型を表現可能である。ブーリアン型、null型の4つの型である。構造化型はオブジェクトと配列の2つの型である。現実のプログラミングで多い操作は、JSONフォーマット形式の文字列(以後JSON文字列と呼ぶ)とJavaScriptオブジェクトの間の相互変換である。JSON文字列のパース:代表的な実装はjson2.jsJSONオブジェクトJSONオブジェクトはネイティブJSONを扱うオブジェクトである。コンストラクタ呼び出しはできない。日付処理Dateクラスは日付時刻を操作するクラスである。内部的には、時刻は基準時からの経過ミリ秒の整数で表現する。基準時はGMTの1970年1月1日の0時0分である。この基準時をepoch(エポック)と呼ぶことから、基準時からの経過時間をエポックミリ秒あるいはエポック値と呼ぶ。日付処理は極論すると以下の4つの形式の間の相互変換にまとめられる。エポック値:データベースの格納値。:利用者への表示用(和暦など)。年月日などの数値:利用者への表示用。利用者からの入力値DateクラスDateクラスの関数またはコンストラクタ呼び出し、プロパティまとめ。expression)は文字列のパターンマッチングに特化した言語である。regex(レジックス)と省略表記する。JavaScriptで正規表現を使うには正規表現オブジェクトを使う。正規表現は言語の一種だが、JavaScriptのような汎用プログラミング言語ではなく、用途を特化した言語である。Language)と呼ぶ。正規表現の主な応用分野は検索(search)と置換(replace)である。入力シーケンス:パターンを探す対象文字列マッチ(match):入力シーケンスの中でパターンに一致する文字列が見つかること正規表現の文法パターン文字列の構成要素はメタ文字とリテラル文字に分けられる。正規表現のリテラル文字はパターンの中に書いた文字がそのままの文字として解釈される。JavaScriptの正規表現JavaScriptで正規表現を扱うには正規表現オブジェクトを使う。正規表現オブジェクトはRegExpクラスのインスタンスオブジェクトである。正規表現プログラミングtestメソッドとexecメソッド:testメソッドは入力シーケンスにパターンがマッチすれば真を返し、マッチしなければ偽を返す。execメソッドは入力シーケンスにパターンがマッチすれば結果オブジェクト(配列)を返す。マッチしなければnull値を返すexecメソッドの返り値:マッチの結果を示す配列。文字列オブジェクトと正規表現オブジェクトStringオブジェクトに正規表現オブジェクトを引数にとるメソッドがいくつかある。replaceValue)などである。最後に配列は順序のある要素の集まり。JSONはJavaScriptのリテラル表記をベースにしたデータフォーマット形式。日付処理はDateクラスを使う。正規表現は文字列のパターンマッチングに特化した言語であり、主な応用分野は検索と置換である。次回は、開発、実行、デバッグ手法などクライアントサイドJavaScriptとHTMLについて解説する。コメントをキャンセルメールアドレスが公開されることはありません。金融機関経営あなたの魅力、解放します。