私は次のコードを使っています。ここでColorWalk cloneこのfloodFillアルゴリズムを最適化するにはどうすればよいですか?アドバイスが必要
がjsのコードは次のとおりです。
function floodFill(x, y, selectedColor, grayColor) {
if (x < 0 || x >= 600) return;
if (y < 0 || y >= 400) return;
let square = $('.blockattribute').filter(function(ind, el) {
return $(el).css('left') == x + 'px' && $(el).css('top') == y + 'px'
});
let squareColor = square.css('background-color');
if (squareColor === grayColor || squareColor === selectedColor) {
square.removeClass().addClass('blockattribute gray');
floodFill(x + 20, y, selectedColor, grayColor);
floodFill(x, y + 20, selectedColor, grayColor);
floodFill(x - 20, y, selectedColor, grayColor);
floodFill(x, y - 20, selectedColor, grayColor);
}
else {
return;
}
}
私はジャバスクリプト/ jqueryのとアルゴリズムを学習に取り組んできたと私はかなり、私は深く得るという事実を除いて、このクローンが働いていましたし、より深くグリッドに入ると、コードは遅くて遅くなります。私はメモ帳について読んでいて、グリッド上で使ってみようとしていましたが、私はどのようにアプローチするかについて固執しています。私が本当に探しているのは、これをどうやって行うのかについてちょっとお勧めです。たぶんmemoizationは行く方法ではないと私は他の方法で私のコードを最適化することができます。私の現在の考えは、最後の灰色の四角形をつかんでそこから進む必要があるということです。正しい軌道にいるのですか?
----編集------
私は灰色または選択した色
次の関数を呼び出すと、最後の関数呼び出しからの戻り値を待つ必要がありますか? – guest271314
返信ありがとう@ guest271314。最後の関数が返ってくるのを待ってどういう意味ですか?まだ処理されていませんか? –
Hey @ guest271314、私は本当にいくつかの助けを使用することができ、私は次の関数が前の関数の戻り値を待つことを意味するものを正確に把握しようとしています。あなたはこのstackoverflowの質問のようなものについて話していますか? http://stackoverflow.com/questions/37724384/how-to-make-a-function-wait-until-return-value –