1

グリッドに単語が入力されているゲームを作成しました

私のコードには、グリッドの障壁を破ることなく、グリッドで使用可能なスペースに単語を収めるのに役立つunderscore.jsが少しあります。

これは非常に強力なJavaスクリプトであり、個人的には問題がないことを理解しています。しかし、私のチームマネージャーは、関数が1つしかないのと同じソリューションを提供し、ライブラリ全体を節約できるjQueryでそれを取り除きたいと考えています。これをjQueryに置き換えるにはどうすればよいですか?

function getWordToFitIn(spaceAvail, wordlist) {
    var foundIndex = -1;
    var answer = _.find(wordlist, function (word, index) {
        if (word.length <= spaceAvail) {
            foundIndex = index;
            return true;
        }
    });
    if (foundIndex == -1) {
        answer = getXSpaces(spaceAvail);
        _.find(wordlist, function (word, index) {
            if (word[0] == " ") {
                foundIndex = index;
                return true;
            }
        });
    }
    if (foundIndex != -1) {
        wordlist.splice(foundIndex, 1);
    }
    return answer;
}
4

1 に答える 1

2

私が見る限り、あなたが使用している唯一のアンダースコアメソッドは_.findです。しかし、意図したとおりに使用しているとは思いません。基準が満たされると、単にループしてtrueを返しているように見えます。

forEachレガシーサポートがない場合はネイティブを使用するか、シムを使用できます。または、この方法を使用できますjQuery.each

最初のループはおそらく(変数について100%確信が持てないanswer)次のように書くことができます:

var answer;
$.each(wordlist, function(index, word) {
    if (word.length <= spaceAvail) {
        foundIndex = index;
        answer = word;
        return false; // stops the loop
    }
});

そして2番目のもの:

$.each(wordlist, function (index, word) {
    if (word[0] == " ") {
        foundIndex = index;
        return false;
    }
});
于 2012-11-08T15:07:36.030 に答える