- ベストアンサー
JavaScript配列の先入れ先出しIEのバグ?
参考資料はO'REILLY初めてのJavaScript(第2版)です。 function pushPop() { //Fifo待ち行列を作成し、pushを使ってアイテムの追加 var fifoArray = new Array(); fifoArray.push("林檎"); fifoArray.push("バナナ"); var ln = fifoArray.push("桜桃"); //長さと配列を表示 document.writeln("長さは" + ln + "で、行列の順番は" + fifoArray + "です。<br />"); document.writeln("<p>"); //shiftを使って配列からアイテムを外す for (var i = 0; i < ln; i++) { document.writeln(fifoArray.shift() + "を取り出します。今の順番は[" + fifoArray + "]です。<br />"); } //長さを表示 document.writeln("長さは" + fifoArray.length + "となりました<br /><br />"); //次に、popとunshiftも同様に行う var fifoNewArray = new Array(); fifoNewArray.unshift("初めての"); fifoNewArray.unshift("Java"); ln = fifoNewArray.unshift("Script"); document.writeln("長さは" + ln + "で配列は[" + fifoNewArray + "]となりました。<br />"); //pop for (i = 0; i < ln; i++) { document.writeln("「" + fifoNewArray.pop() + "」を取り出します。配列は[ " + fifoNewArray + "]となりました。<br />"); } document.writeln("長さは" + fifoNewArray.length + "となりました。"); document.writeln("</p>"); } Google Chromeでは以下のように書籍通りになりました。 /*---------Google Chrome実行結果---------*/ 長さは3で、行列の順番は林檎,バナナ,桜桃です。 林檎を取り出します。今の順番は[バナナ,桜桃]です。 バナナを取り出します。今の順番は[桜桃]です。 桜桃を取り出します。今の順番は[]です。 長さは0となりました 長さは3で配列は[Script,Java,初めての]となりました。 「初めての」を取り出します。配列は[ Script,Java]となりました。 「Java」を取り出します。配列は[ Script]となりました。 「Script」を取り出します。配列は[ ]となりました。 長さは0となりました。 /*---------Google Chrome実行結果(END)---------*/ IEに関しては、以下のように配列の長さは未定義になり pop(メソッド)を使って配列の最後の要素を削除したいのですができません 長くなりましたが回答の方、宜しくお願いします!!! /*---------IE実行結果---------*/ 長さは3で、行列の順番は林檎,バナナ,桜桃です。 林檎を取り出します。今の順番は[バナナ,桜桃]です。 バナナを取り出します。今の順番は[桜桃]です。 桜桃を取り出します。今の順番は[]です。 長さは0となりました 長さはundefinedで配列は[Script,Java,初めての]となりました。 長さは3となりました。 /*---------IE実行結果(END)---------*/
- みんなの回答 (2)
- 専門家の回答
お礼
回答ありがとうございます!! 解決しました。 fifoNewArray.unshift("Script"); ln = fifoNewArray.length; 上記のようにコーディングすれば見栄えもすっきりして 気持ちが良いですね!!