2016-04-17 18 views
2

は、i≥-1 コンマで区切った単語「」、および整数の文字列をパラメータmを取り、Mのi番目 ワードを返す関数getOptionコマンド(M、i)を書きます。 i = -1の場合、i番目の単語 が返されます。エラーチェックは必要ありません。JavaScriptコードのgetOptionコマンド

たとえば、getoption( "hello、hi、why、ok"、1)はhelloを返す必要があります。

getoption("hello,hi,why,ok",4)はokを返す必要があります。

getoption("hello,hi,why,ok",-1) may hello、hi、who OR okです。

ヒント:文字列mを文字 "、"で分割する必要があります。これは という単語の配列になります。最初の単語がインデックス 0であることを忘れないでください!今、iが-1より大きい場合、配列の開始インデックス が0であるため、要素i + 1を返します。i = -1の場合、0からarray.length-1までの数字 をランダムに生成してから、対応する をこの数値に対応させます。

こんにちは、私は以下のコードを書いており、6行目にタイプエラーがあり、修正方法がわかりません。助けてもらえますか?

+0

iは数ある:私はそれが役に立てば幸い

function getoption(m, i) { var words = m.split(","); if (i == -1) { i = Math.floor(Math.random() * words.length); } return words[i]; } document.write(getoption("hello,hi,why,ok",-1)); document.write("<br>"); document.write(getoption("hello,hi,why,ok",0)); document.write("<br>"); document.write(getoption("hello,hi,why,ok",2));

を。配列と文字列のみがindexOfを持っています – mplungjan

+0

どうすれば修正できますか? –

+0

機能が複雑すぎます。 'var list = m.split("、 ")'で始まり、渡された数字をテストし、-1であればリストからランダムな単語を取得し、そうでなければlist [i]を返します。ここでindexOfは必要ありません。 list.lengthを使って乱数を計算する – mplungjan

答えて

0

function getoption(m, i) { 
 
    var num = m + Math.floor((m + 1) * Math.random()); 
 
    var j = i.indexOf(num); 
 

 
    while (j != -1) { 
 
    num = m + Math.floor((m + 1) * Math.random()); 
 
    j = i.indexOf(num); 
 
    } 
 

 
    return (num); 
 
} 
 

 
document.write(getoption("hello,hi,why,ok", -1))

が望む結果を得るために、私は String#split()で単語列に文字列を分割し、適切な変数に格納することをお勧めします。

次に、インデックスが-1と等しいかどうかを確認し、配列の長さとMath.random()の新しいインデックスを取得することをお勧めします。

単語配列のインデックスを持つ要素を返します。

function getoption(words, index) { 
 
    var wordArray = words.split(','); 
 
    if (index === -1) { 
 
     index = Math.floor(Math.random() * wordArray.length); 
 
    } 
 
    return wordArray[index]; 
 
} 
 

 
document.write(getoption("hello,hi,why,ok", -1))

+0

私はインデックス4を置くとき、代わりにundefinedを返します。 –

+0

@ミサそうです、配列のインデックスは[ゼロベース]です(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array#Accessing_array_elements)。'index = 0'を取ると、' hello'を返します。これは完璧です。 –

0

あなたはもっと簡単な方法をあなたの関数を減らすことができます。

そのような何か試してみてください:D

+0

私はインデックス4を置くと、okではなくundefinedを返します。 getoption( "hello、hi、why、ok"、4)はokを返さなければなりません。 –

+0

インデックス0に基づいているためです。 'document.write(getoption(" hello、hi、why、ok、0)) 'が** hello **の場合、' document.write(getoption( "hello、hi、why、ok"、3)) '** ok **です – Fabricio