0

ロジックが失敗する場所を理解するのに苦労しています! 段落から取得した単語を配列にプッシュする際に word.length 条件を課そうとすると、無限ループに陥ります。皆さんの思いを聞かせてください、ありがとう!

var str = document.getElementsByTagName('p')[0].innerHTML;
console.log(str);



function wordIndexes(str) {
    var result = [];
    var len = str.length;
    var i = 0, j, word;

    while (i < len) {
        if (str[i] === ' ') {
            ++i;
        }
        else {
            word = "";
            for (j = i; j < len && str[j] !== ' '; ++j) {
                word += str[j];
            }

              console.log(word.length);

            //imposing length conditions
              if (word.length < 4)
               {console.log('too short')}

              else {    
              result.push([i, word]);
              i = j;
              };


        }
    }
    return result;  
}
4

3 に答える 3

3

語長が 4 未満の場合、コードはメッセージをログに記録しますが、 を更新しないiため、次の反復は同じポイントで開始され、同じポイントで失敗します。

別の方法をお勧めしますが、この状態をどのように処理するつもりかは明確ではありません。

于 2013-07-11T07:30:54.220 に答える
0
if (word.length < 4)
{
  console.log('too short')
}
else
{
  ...

この状態で行っても i カウンターは変化しません。毎回この状態にならないようにチェック

于 2013-07-11T07:32:24.607 に答える
0

if ステートメントで i =j を逃した

if (word.length < 4)
{
  console.log('too short')

i = j  // You missed this

}
于 2013-07-11T07:37:35.433 に答える