2017-11-14 6 views
0

"Conway's Game of life"(ちょうど楽しみと学習のため)のhtml(キャンバス)版を作るのは忙しいです。次世代を計算する。jQueryで計算のための配列コピーを作成する方法

私が持っている問題は、私はのような何かをしようと試みた私の描画のための「2D」アレイを使用して、新しいものとsindsイムを作るために、古い世代からのバックアップ・バージョンを必要とするということである。

var game = []; //this is the original array in 2D 
var calc = game.slice(); 
// here the code to edit "game" and draw using "game" 
// here the code to calculate the next gen on "calc" using the info from "game" 
game = calc.slice(); 
// draw using info on "game" 

が、何とかこれは私の上で動作しませんでした...

私はこれを行うには間違いがありますか、私はこれに対して別のソリューションを使用する必要がありますか?あなたがやっている場合も、私はここに「.slice」に関するいくつかの情報を見つけましたが、または私はこの上でより多くの情報が必要か、私は愚かだ...

挨拶...

+2

「動作しません」と言うと、正確に何が得られ、何を得ることが期待されますか? –

+0

@RobAnthony私が間違っていると思うのは、私が "ゲーム"も(自動的に)私がそう言うまで私が望んでいないものを変更した "calc"を変更した場合です。 –

答えて

0

ディープ・コピー(多次元)の場合は、一度に各レイヤーを通過し、スライスする必要があります。

var calc = game.map(function(x){ 
    return x.slice(); 
}); 

何度もこの多くを行う上で計画している場合、その後ちょうどそれのための関数を作成:

function deepCopyArray(arr){ 
    return returnArray = arr.map(function(x){ 
     return x.slice(); 
    }); 
} 

var calc = deepCopyArray(game); 

マップを使用しない場合、あなたはまた、単にためにそれを行うことができます-loop:

var calc = []; 

for(var i = 0; i < game.length; i++){ 
    calc[i] = game[i].slice(); 
} 
+0

情報ありがとう –

関連する問題