2017-12-11 11 views
0

天気を評価しようとしています。ユーザー入力文字列内の単語はすべて「@」で始まります。javascriptの配列の各文字列の最初の文字を見てください

Iveは、入力文字列を単語の配列に分割して開始しました。 その後、最初の文字を見て各単語をループし、 "@"があるかどうかを確認します。

charAt()がエラーを返すように見える理由を理解できません。

<!DOCTYPE html> 
<html> 
<body> 

<input id="txt" type="textarea" /> 
<button onclick="myFunction()">Try it</button> 



<script> 
function myFunction(){ 
    var text = document.getElementById('txt').value; 
    var inputArray = [text.split(" ")]; 
    console.log(inputArray); 

    for(i=0; i < inputArray.length; i++){ 
    console.log(inputArray[i]); 
    if(inputArray[i].charAt(0) === '@'){ 
     console.log("its an at symbol"); 
    } else{ 
     console.log("nope"); 
    } 
    } 
} 
</script> 
</body> 
</html> 
+1

'text.split(" "") 'はすでに配列を返します。なぜあなたはそれを1つに包んでいますか? – Xufox

+1

'const symbols = text.match(/ @ \ w + /)|| []; ' –

答えて

0

ラインvar inputArray = [text.split(" ")];が原因であるようです。 text.split(" ")は配列を返すので、そのステートメントを角かっこで囲むことで、最初のインデックスが探している配列である配列が得られます。

したがって、ループのinputArray[i]は実際には文字列ではなく文字列の配列に対してcharAt(0)を実行しようとしています。

+0

ありがとう!それは完全に意味を成して働きました。明示的に配列に入れる必要があると私は考えました。 –

+0

問題ありません!喜んで助けてください。 –

関連する問題