JavaScriptの技法:データ構造を配列で作成する
文:Nick Gibson(Builder AU)
翻訳校正:原井彰弘
翻訳校正:原井彰弘
2008/01/09 07:00
JavaScriptの配列オブジェクトは、一つの変数に複数のデータを割り当てる機能を強力にサポートしている。しかし、配列を利用すれば、それだけではなくスタックやキューといったデータ構造をアプリケーションで利用することも可能になる。
リストB
<html><head>
<title>JavaScript Queue</title>
<script language="JavaScript">
function queueDemo() {
var i;
var queue = [];
queue.push(1);
queue.push(2);
i = queue.shift();
document.write(i + "<br />");
queue.push(3);
queue.push(4);
i = queue.shift();
document.write(i + "<br />");
}
</script></head><body>
<form name="frmQueue">
<input name="btnQueue" value="Queue" type="button" onClick="queueDemo();" />
</form></body></html>
このコードを実行すると、以下の出力が生成される。
1 2
この例は非常に単純だ。まず、pushメソッドを用いて2つの整数値(1と2)を配列に追加している。その次に、shiftメソッドを用いて配列の最初の要素(1)を取得し、続いてさらに2つの値(3と4)を配列に追加している。そして、最後に配列の最初の要素(2)を取得し表示している。
さて、配列にはunshiftというメソッドも存在する。このメソッドを用いると配列の先頭に一つまたはそれ以上の要素を挿入できる。配列の末尾に追加を行うpushメソッドとは対照的だ。ちなみに、このunshiftメソッドの戻り値は配列の新しい長さになる。リストCでは、先ほどの例をunshiftメソッドを利用するように変更している。
リストC
<html><head>
<title>JavaScript Queue using unshift</title>
<script language="JavaScript">
function queueDemo() {
var queue = [];
queue.unshift(1);
queue.unshift(2);
var i = queue.shift();
document.write(i + "<br />");
queue.unshift(3);
queue.unshift(4);
var i = queue.shift();
document.write(i + "<br />");
}
</script></head><body>
<form name="frmTest">
<input name="btnQueue" value="Queue" type="button" onClick="queueDemo();" />
</form></body></html>
生成される出力が変化することがお分かりだろう。この例ではすべての値が配列の先頭に追加されるため、ページのボタンを押してスクリプトを動作させると、以下のような値が表示される。
2 4
キューはデータ構造の最初の要素に対して焦点を合わせて作業を行った。一方、スタックでは最後に追加されたアイテムに注目して作業を行う。
スタック
スタックはデータを扱う際にLast-in First-out(LIFO)の手法を用いたデータ構造だ。スタックは「プッシュダウンリスト」、つまり新しいアイテムがすでにリストに存在するアイテムを押し下げて挿入されるリストと考えることもできる。この考え方では、最後に追加されたアイテムがリストの最初のアイテムとなる。
- 3人の推薦記事
- 1人がクリップ
-
ソーシャルブックマーク(-)
- トラックバック(0)
- ホワイトペーパー
- 話題のタグ
JavaScript
Apache
入門
プログラミング言語
モバイル
Webアプリケーション開発
PHP
iPod touch
開発環境
Tips
CSS
Firefox 3
SOA
Windows
server
ブラウザ
Webサービス
携帯電話機
仮想化ソフトウェア
データベース
ソフトウェア開発
脆弱性
Flash
Off Topic
Mozilla
iPhone 3G
Apple
Google
Mac OS X
Database
小技
Opera
Linux
iPhone
XML
Ajax
Java
Internet Explorer
Safari
オープンソース
リファレンス
Ruby
Python
HTML
RIA
仮想化
プロジェクト管理
Firefox
Webデザイン
Adobe
話題のタグを見る »
文字にドロップシャドウの効果をつける--FirefoxとSafariのCSS対応
iPhoneにAdiumが載らない2つの理由
iPhone 3Gの節電術
マイクロソフトはIE 8で地雷を踏んだ?
マイクロソフト、Internet Explorer 8のベータ2をリリース
「iPhone」のパスコードロックに深刻な脆弱性--連絡先情報が読み取られる危険も
Windows XPのバックアップユーティリティについて知っておくべき10のこと
S・ウォズニアック氏:「エンジニアは自分の心に従って行動すべき」--IDFインタビュー
Firefox 3.1のHTML 5対応を検証--Canvas Text APIとCanvas Shadow API
グーグルが、無料社食をついに廃止?--真実はいかに
iPhoneからサーバにSSHログイン:TouchTerm
トップページにみる日本のウェブデザイン--表現したい人たちが集うMySpace
モジラ、「Firefox 3.1」でJavaScript実行を大幅に高速化
APC SOLUTIONS FORUM 2008をレポート
「シンプル」&「低コスト」な運用管理
DELLが掲げる「新・仮想化アセスメントサービス」
ZDNet Japan Green IT
ZDNet Japan ホスティング特集
仮想化環境で求められるストレージの要件
セキュリティ対策レベルテスト公開!
Webセキュリティ特集
Techno Exchange