2014-08-29 101 views
0

我想在地圖上設置一些隨機座標。我寫了console.log行來查看它是否成功地選取數字,但它告訴我,我的destinations陣列中的所有內容都是NaN。JS:爲什麼我的變量被賦值而不是調用函數?

它看起來像是將Math.random函數分配給變量,而不是調用Math.random併爲其返回數字。任何人都知道發生了什麼?

var nodeCount = 10 
var mapSize = 100; 

var destinations = new Array(nodeCount); 
for (var i = 0; i < nodeCount; i++) { 
    destinations[i] = new Array(2); 
} 

var generateDestinations = function(nodeCount) { 
    for (var i=0; i<nodeCount; i++) { 
     destinations[i][0] = Math.floor(Math.random*mapSize); //sets x-coord 
     destinations[i][1] = Math.floor(Math.random*mapSize); //sets y-coord 
     console.log(destinations); 
    } 
}; 
generateDestinations(nodeCount); 
+1

要叫你以後需要括號功能函數名稱。 'Math.random()* mapSize' – nnnnnn 2014-08-29 03:28:36

回答

2

Math.random()是一個函數,所以它需要與呼叫操作來完成:

Math.floor(Math.random() * mapSize); 
//     ^^ 

同去的下面一行。


此外,您可以使用數組文字語法而不是調用構造函數。這是更清潔和更富有表現力:

var destinations = []; 
for (var i = 0; i < nodeCount; i++) { 
    destinations[i] = []; 
} 
+0

我最初正在尋找一些解決方案來創建數組中的每個點,因爲它經歷了for循環,但我不知道如何調出數組的第二個位置。 我試着將第一個循環更改爲您提供的循環,但是我收到語法錯誤,因爲它不理解何時使用第二個括號內的數字。 'destinations [i] [0] = Math.floor(Math.random()* mapSize); //設置x-coord' – ajHurliman 2014-08-29 05:53:46

+0

什麼是錯誤?你能提供一個[示例](http://jsfiddle.net)? – 0x499602D2 2014-08-29 06:05:44

+0

拍攝,我留在'新的陣列'部分,所以錯誤讀取像: 'var destinations = new Array []; ^ SyntaxError:意外的令牌]' 我修正了它,謝謝你的幫助! – ajHurliman 2014-08-29 06:23:54

0

http://www.w3schools.com/jsref/jsref_random.asp

試試這個,看起來像你定義一個最大值而不是分鐘,(我假設你想在0和mapSize之間的數字)

//       \/ max value 
    Math.floor((Math.random()*mapSize) + 0); 
    //         /\ min value 

還的Math.random是這樣一個功能的

Math.random() 
+0

如何添加零幫助? – nnnnnn 2014-08-29 03:43:40

+0

加零是最小值,所以你可以真的把90或任何你想要的。由於mapSize = 100,那麼這將返回一個從0到100的值 – 2014-08-29 03:48:44

+0

我的觀點是,添加零實際上沒有做任何事情 - 沒有它,你會得到相同的結果。請注意,如果您使用的是正數而不是零,則會增加最小可能值和最大可能值,因爲您在進行乘法運算後將其添加。 – nnnnnn 2014-08-29 13:56:23

相關問題