JavaScriptの技法:データ構造を配列で作成する
文:Nick Gibson(Builder AU)
翻訳校正:原井彰弘
翻訳校正:原井彰弘
2008/01/09 07:00
JavaScriptの配列オブジェクトは、一つの変数に複数のデータを割り当てる機能を強力にサポートしている。しかし、配列を利用すれば、それだけではなくスタックやキューといったデータ構造をアプリケーションで利用することも可能になる。
スタックでは、pushメソッドはpopメソッドと共に使用される。popメソッドは同じく配列オブジェクトに存在するメソッドで、配列の最後の要素を削除してその値を返す機能を提供する。普通は、このとき配列に追加された最後の要素が取り出される。ちなみに、このメソッドも配列の長さに影響を与える(アイテムが削除されると配列の長さが1減る)。リストDの例では、popメソッドとpushメソッド双方を使用して、配列をスタックのデータ構造として使用している。
リストD
<html><head>
<title>JavaScript stack</title>
<script language="JavaScript">
function stackDemo() {
var i;
var stack = [];
stack.push(1);
stack.push(2);
i = stack.pop();
document.write(i + "<br />");
stack.push(3);
stack.push(4);
i = stack.pop();
document.write(i + "<br />");
i = stack.pop();
if (i != null) {
document.write(i + "<br />");
} }
</script></head><body>
<form name="frmStack">
<input name="btnStack" value="Stack" type="button" onClick="stackDemo();" />
</form></body></html>
このコードを実行すると、以下の出力が生成される。
2 4 3
ところで、これらのメソッドの機能は少々重複する。なぜなら、shiftメソッドとunshiftメソッドを用いてもスタックのデータ構造を実現することが可能だからだ。そこで、リストEではこのコードをshiftメソッドとunshiftメソッドの組み合わせで書き直している。
リストE
<html><head>
<title>JavaScript Stack</title>
<script language="JavaScript">
function stackDemo() {
var i;
var stack = [];
stack.unshift(1);
stack.unshift(2);
i = stack.shift();
document.write(i + "<br />");
stack.unshift(3);
stack.unshift(4);
i = stack.shift();
document.write(i + "<br />");
var i = stack.shift();
if (i != null) {
document.write(i + "<br />");
} }
</script></head><body>
<form name="frmStack2">
<input name="btnStack" value="Stack" type="button" onClick="stackDemo();" />
</form></body></html>
また、先ほどのキューの例は、unshiftメソッドとpopメソッドを用いてリストFのように書き直すことも可能である。
リストF
<html><head>
<title>JavaScript Queue using unshift/pop</title>
<script language="JavaScript">
function queueDemo() {
var i;
var queue = [];
queue.unshift(1);
queue.unshift(2);
i = queue.pop();
document.write(i + "<br />");
queue.unshift(3);
queue.unshift(4);
i = queue.pop();
document.write(i + "<br />");
} }
</script></head><body>
<form name="frmQueue2">
<input name="btnQueue" value="Queue1" type="button" onClick="queueDemo();" />
</form></body></html>
選択肢は多数
ほかの開発言語と同様に、JavaScriptにも特有の奇妙な動作が存在する。配列をさまざまな用途に利用できるのはそのよい例だろう。配列だけでスタックやキューといったデータ構造を簡単に利用できるのだ。ただし、これらのデータ構造は、ウェブアプリケーション構築時に自由に利用できる数多くの機能の一つにすぎない。
- 3人の推薦記事
- 1人がクリップ
-
ソーシャルブックマーク(-)
- トラックバック(0)
米フォレスター・リサーチ社 シニアアナリスト Jeremiah K.Owyang氏を迎え、同氏が提唱するソーシャルテクノロジーを効果的に活用方法するための方法『POST』を日本で初めて紹介する注目のリアルイベント
- 今日のトップ記事
- 昨日
- 4日前
- 5日前
- 6日前
- 7日前
- ホワイトペーパー
- 話題のタグ
Tips
Windows
PHP
RIA
HTML
仮想化
Firefox
iPhone
モバイル
リファレンス
ブラウザ
Flash
レビュー
SOA
Google
ソフトウェア開発
Database
iPod touch
iPhone 3G
Webサービス
Java
Mozilla
ユーザーインタフェース
Linux
プロジェクト管理
小技
プログラミング言語
Internet Explorer
Mac OS X
携帯電話機
Off Topic
開発環境
オープンソース
Apple
Webアプリケーション開発
UI
Firefox 3
Python
Safari
データベース
デザイン
Adobe
Webデザイン
server
CSS
脆弱性
Ajax
入門
仮想化ソフトウェア
JavaScript
話題のタグを見る »
ソーシャルテクノロジーをビジネスに利用する
Linux必携のオフィス向けアプリケーション10選
iPhoneでQRコードの読み取りを試す、しかし
Oracle VM Managerで仮想マシンを動かす
グルジアに渡ったカメラマンの全記録--大国に翻弄される人々の息遣い
iPod touchで音声通話が可能に--Fringを早速試す
Mozilla Labs、Firefoxで地理情報を認識活用できるプラグイン「Geode」を正式発表
DelphiのパフォーマンスをDelphiで改善:エンバカデロの製品戦略
社内政治を生き抜くための教訓10箇条
エンタメCGM「gooメーカー☆メーカー」
これからの時代のセキュリティ対策
グリーンITの第一歩は見える化です
ZDNet Japan Green IT
ERPパッケージの導入を成功させるコツ
Techno Exchange