JavaScriptのforループを使って、あるスタックの全要素を別のスタックに移す方法
スタック(Stack)は「後入れ先出し(LIFO:Last In First Out)」という原則で動作するデータ構造です。そのため、最初のスタックから別のスタックへ要素を移し替えるには、まずpop()メソッドですべての要素を取り出し、それらをpush()メソッドで2つ目のスタックに挿入していく必要があります。
ここでは、forループを使ってこの処理を実装する方法を紹介します。ループの条件としてmyFirstStack.lengthを指定することで、配列が空になるまで(すべての要素が取り出されるまで)処理を繰り返すことができます。
サンプルコード
var myFirstStack = [10, 20, 30, 40, 50, 60, 70];
var mySecondStack = [];
for (; myFirstStack.length; ) {
mySecondStack.push(myFirstStack.pop());
}
console.log("1つ目のスタックからすべての要素を取り出した後=");
console.log(myFirstStack);
console.log("2つ目のスタックにすべての要素を挿入した後=");
console.log(mySecondStack);
プログラムの実行方法
上記のプログラムを実行するには、以下のコマンドを使用します。
node ファイル名.js
ここでは、ファイル名をdemo189.jsとして保存したものとします。
実行結果
上記のコマンドを実行すると、コンソールには次のような出力が表示されます。
PS C:\Users\Amit\javascript-code> node demo189.js 1つ目のスタックからすべての要素を取り出した後= [] 2つ目のスタックにすべての要素を挿入した後= [ 70, 60, 50, 40, 30, 20, 10 ]
実行結果のポイント
注目すべきは、2つ目のスタックの並び順です。LIFOの性質により、元のスタックの末尾から順に取り出されて追加されるため、[10, 20, ..., 70]だった要素は逆順の[70, 60, ..., 10]になっています。これはスタックの仕様通りであり、期待どおりの動作です。もし元の順序を保ったまま移したい場合は、さらに一度別のスタックへ移し替えるなど、追加の工夫が必要になります。
-
【初心者向け】JavaScriptのfor...ofループの使い方を実例つきで解説
JavaScriptのfor...ofループは、配列、文字列、配列風オブジェクト(Array-like objects)、NodeListなど、反復可能(イテラブル)なオブジェクトの要素を先頭から順番に1つずつ取り出して処理するための構文です。 インデックスの管理が不要なため、従来のforループやforEachメソッドと比べてコードが簡潔になり、可読性や保守性が向上するというメリットがあります。 for...ofループの基本構文 for (変数 of 反復可能オブジェクト) { // 各要素に対して実行したい処理 } サンプルコード 次の例では、for...ofループを使って文
-
JavaScriptのforループを使って空のオブジェクトにプロパティを設定する方法
JavaScriptでは、for...inループを使うことで、既存のオブジェクトから空のオブジェクトへプロパティを簡単にコピーできます。以下に、forループを使用して空のオブジェクトにプロパティを設定するサンプルコードを紹介します。 コード例 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width,