2016-05-27 2 views
-4

の関数はエラーではありませんstr.splitではありません関数(...)str.splitは私が入力崇高に次のエラーを取得しておくのjavascript

私は間違っていますか?ありがとうございました!

+1

「私は間違っていますか?」 ---関数ではないものを呼び出そうとしています。 – zerkms

+0

'str'として何を渡しますか? –

+0

'str'とは何ですか? 'longestWord( 'あなたはここに何を渡しているのですか?')を呼び出す方法の例を教えてください。 – Marcus

答えて

0

文字列ではなく配列を分割しようとしています。以下のコードは修正されています。

function longestWord(str){ 
    var result = str[0]; 
    str = **result**.split(' '); 

    for(var i = 0; i < str.length; i++){ 
     if(str[i].length > result.length){ 
      result = str[i]; 
     } 
    } 

    return result; 
} 
+2

代わりに渡される値を変更することをお勧めします。関数が単一の要素を持つ配列を受け入れることは不合理なようです。 –

+0

'var longest = '';'が必要で、それを比較してください。 'str [i]'は 'result'より長くなることはありません。 – 1983

0

少し読者にやさしい機能的アプローチ。

function getLargestWord(stringOrArray){ 
 
    var words = stringOrArray.toString().match(/\w+/gi); //toString..ifs its an array otherwise dont need it 
 
    var wordLength = words.map((e ,i) => i = e.length); 
 
    var highestNumber = Math.max.apply(null,wordLength); 
 
    
 
    return words[wordLength.indexOf(highestNumber)]; 
 
} 
 
var sentence = "the quick brown fox jumped over the lazy dog."; 
 
console.log(getLargestWord(sentence))

0

あなたの問題は、あなたの関数に1つの文字列の配列の引数を渡すだけではなく、あなたの文字列で渡しているということです。

forループを使用するよりも、ほとんど常に良い方法があります。 Array.prototype.reduceは、アレイを横断して単一の値を返すためのものです:あなたは、手動でインデックスを追跡する必要があり、一時的な変数を作成、または手動でのアレイからデータを抽出していない


 
var longest = function(str){ 
 
    return str.split(' ').reduce(function(long, cur){ 
 
     return cur.length > long.length ? cur : long; 
 
    }, ''); 
 
}; 
 

 
var str = 'the quick brown fox jumps over the lazy dog'; 
 
console.log(longest(str));

お知らせ。 reduceに慣れると、コードをより明確にして、間違いを防ぐことができます。

1
  function longestWord(str) { 
      var result = str[0]; 
      str = str.split(' '); 

       for (var i = 1; i < str.length; i++) { 
       if (str[i].length > result.length) { 
        result = str[i]; 
       } 
      } 
      return result; 
     } 
     var sentence = "the quick brown fox jumped over the lazy dog."; 
     document.write(longestWord(sentence)); 
0

私はこれと同じ最長のワード挑戦に出くわしたと私はstr.split()がその上で動作しませんでしたので、うちの簡単な方法は、私は、配列に文を分割する方法を作成して見つけることができませんでした特定のプラットフォーム。

function splitArray(sentence){ 
    var arrayPosition = 0; 
    var oneWord = ""; 
    var newSentence = sentence + " "; 
    var splitArray = new Array(); 
for(var j = 0; j < newSentence.length; j++){ 
    if(newSentence[j] === " "){ 
     splitArray.push(oneWord); 
     arrayPosition++; 
     oneWord = ""; 
    }else{ 
    if(!isNaN(newSentence[j])){ 
     //don't add to the string 
    }else{ 
     oneWord += newSentence[j]; 
    } 
    } 
} 
return splitArray; 

}; 

この関数は、文中の各単語が渡され、文字または文字列として整数をとらない配列を返します。

0

これは、配列を分割しようとしているためです。

代わりに文字列を渡します。

function longestWord(str) { 
    var result = str[0]; 
    str = str.split(' '); 

    for (var i = 1; i < str.length; i++) { 
     if (str[i].length > result.length) { 
      result = str[i]; 
     } 
    } 
    return result; 
} 
var sentence = "the quick brown fox jumped over the lazy dog."; 
document.write(longestWord(sentence)); 
関連する問題