2017-04-08 4 views
0
user_input = ""; 
answer = ""; 

Array.greeting = ["hi", "hello"] 
Array.names = ["john","james"] 

user_input = document.getElementById('user_input').value.toLowerCase(); 
document.getElementById('text_input').innerHTML = user_input; 

documnet.getElementById('say_something').innerHTML = say; 
if(""){} 
else{} 
if(Array.greeting.includes(user_input) > 0){ 
    say = "Hello"; 
} 
if(Array.names.includes(user_input) > 0){ 
    say = "User"; 
} 

これは私が理解している正しい出力で動作しているが、どのように入力 "hi john"を使用して、 "Hello User"の出力を配列に焼き付けて出力できますか?文字列の一部が配列内にあるかどうかを確認する方法は?

+0

'documnet'はタイプミスです。 'say'はその行が実行されるときには定義されません。 – Xufox

+1

変数を宣言するのではなく、 'Array'オブジェクトにプロパティを追加していますか?あなたがこれを知っていると仮定すると、なぜあなたはそのアプローチをとっていますか? –

+0

これは実際にはコードの一部ではなく、急いで行われました。 'if(Array.greeting.includes(user_input)> 0){ say =" Hello "; } if(Array.names.includes(user_input)> 0){ say = "User"; } ' 私はこれらの2つを組み合わせて、回答が両方から、または複合目標から出るようにする必要があります。 –

答えて

0

あなたはこのようにそれを行うことができます:明らかに

var greetings = ["hi", "hello"]; 
 
var names = ["john","james"]; 
 

 
submit.onclick = function() { 
 
    // Split input into words, and convert that array to a Set for fast lookup 
 
    var words = new Set(user_input.value.split(/\s+/)); 
 
    // Choose a greeting that is not among the input words. 
 
    // If all of them occur in the input, take the first greeting word 
 
    var greeting = greetings.find(greeting => !words.has(greeting)) || greetings[0]; 
 
    // Choose a name that is not among the input words (or take the first) 
 
    var name = names.find(name => !words.has(name)) || names[0]; 
 
    // Output with textContent (not innerHTML!) 
 
    text_input.textContent = user_input.value; 
 
    say_something.textContent = greeting + ' ' + name; 
 
}
Input: <input id="user_input"><button id="submit">Submit</button><br> 
 

 
You said: <span id="text_input"></span><br> 
 
Reply: <span id="say_something"></span>

、あなたは両方の「ハイ」と「こんにちは」を入力したときに、コードを使用するために挨拶を見つけることができません。その場合は、配列内の最初の挨拶(「hi」)が使用されます。名前にも同じ原則が適用されます。

+0

私は期待したものではありませんが、これは私の開発に役立ちます。力があなたと一緒にありますように:D –

0

あなたの要件を簡略化してみましょう: 配列 "arr"の要素に文字列 "s"の一部が含まれているかどうかを確認する必要があります。

var check = function(arr, s) { 
    for (var i = 0; i < arr.length; i++) { 
    if (s.indexOf(arr[i]) > -1) { 
     return true; 
    } 
    } 
    return false; 
} 
+0

'Array.Greeting = [" hi "、" hello "]; Array.Names = ["john"、 "james"]; if(Array.Greeting.includes(user_input)> 0){ say = "こんにちは。 } if(Array.Names.includes(user_input)> 0){ say = "User"; } ' これは私にとっても同じことですが、' user_input'に両方の配列の値があるかどうかをどうすれば確認できますか?たとえば、「hi john」とします。 –

+0

私のソリューションを拡張して、 'if(array.greeting、user_input)&& check(Array.names、user_input)){say =" Hello User "}' – lazyvab

関連する問題