2016-06-13 20 views
0

randomTestで選択されているランダムインデックスにアクセスするのに問題があります。 analytics_test()でrandomTestを呼び出すと、定義されていないエラーが発生します。あたかも私がこの変数に実際にアクセスしていないかのように感じます。この問題を解決するためのヒントやアイデアはありますか?私はそれを感謝します、ありがとう!配列内の任意のインデックスを選択し、別の関数から変数を呼び出します。 JavaScript

//This function creates a loop for 5 random numbers. Each index in the array is given a variable 
function createTest_Var() { 
    var testNumber = []; 
    var i; 
    for (i = 0; i < 5; i++) { 
     testNumber[i] = (Math.random() * 10); 
    } 
var randomTest = testNumber[Math.floor(Math.random() * testNumber[i].length)]; 
return testNumber; 
} 
//This function takes chooses a random index from the array and compares it to the random number "y". 
function analytics_test() { 
    var y = (Math.random() * 10); 
    var i = createTest_Var.randomTest; 
     if (y < i) { 
     //Just a test console.log ("the random numbers are: " + (Math.random() * 10)); 
      console.log ("It is greater! " + i + "<" + y); 
     } 
     else { 
      console.log("not big enough " + i + ">" + y); 
     } 
} 
+1

'VAR I = createTest_Var.randomTest;' ---この文は何をするのでしょうか?そしてなぜあなたは 'createTest_Var'で2つのリターンを持っていますか? – zerkms

+0

私は、iをcreateTest_Var()でアクセスしようとしている "ランダムインデックス"と等しく設定します。私は関数analytics_test()で乱数をYと比較しようとしました。また、コードの周りをテストしていたので、私は2つのリターンステートメントを持っています。私は2つ目のステートメントを削除します。 – Zeke

+1

私は意地悪ではありませんが、JavaScriptチュートリアルのいくつかを試してみる必要があると思います。 'return'の後に' var'ステートメントを置くと、基本的に何もしません。関数の外部にアクセスできる関数には、必ずしもプロパティを追加しません。 –

答えて

1

いくつかの問題:あなたはそのコードに到達する前に機能を終了しているため

  • randomTestは、その値を取得することはありません。しかし、後にreturnステートメントを移動しても、関数本体の外側からはアクセスできません。
  • あなたは決して関数createTest_Varを実行しません。コードcreateTest_Var.randomTestは、関数オブジェクトの不明なプロパティにアクセスしようとします。あなたが書くべき関数を呼び出すにはcreateTest_Var()
  • 最初の問題のため、実際には生成された配列からランダムな要素を取り出すわけではありません。このためには、別の関数を書くことができます。pickFromArray(createTest_Var())
  • testNumber[i].lengthが正しくありません。i番目の要素ではなく配列の長さが必要なので、testNumber.lengthと書いてください。ここで

コード修正です:

//This function creates a loop for 5 random numbers. Each element in the array is given a value 
 
function createTest_Var() { 
 
    var testNumber = []; 
 
    var i; 
 
    for (i = 0; i < 5; i++) { 
 
    testNumber[i] = (Math.random() * 10); 
 
    } 
 
    return testNumber; 
 
} 
 

 
// Function to pick random element from array 
 
function pickFromArray(testNumber) { 
 
    return testNumber[Math.floor(Math.random() * testNumber.length)]; 
 
} 
 

 
//This function takes chooses a random element from the array and compares it to the random number "y". 
 
function analytics_test() { 
 
    var y = (Math.random() * 10); 
 
    var i = pickFromArray(createTest_Var()); 
 
    if (y < i) { 
 
    //Just a test console.log ("the random numbers are: " + (Math.random() * 10)); 
 
    console.log ("It is greater! " + i + "<" + y); 
 
    } 
 
    else { 
 
    console.log("not big enough " + i + ">" + y); 
 
    } 
 
} 
 

 
analytics_test();

+0

ありがとうございました!それは私の愚かな間違いだった - randomTestを宣言する前に関数を終了する。それは本当に私が間違っていたことの全体的な理解だけで、低を助けました。再度、感謝します。 – Zeke

関連する問題