2014-08-29 31 views
2

我有JavaScript函數,將數字添加到數組開始形式最小到最大,並增加一步,但是當我使用getNumbers(2,20,2);它打印2,22,222,2222,....它不增加任何人都可以幫助我。我有javascript數組添加數字

 function getNumbers(min, max, step) { 
       var i; 
       for(i=min ; i<max ; i+=step){ 
       array.push(i); 
       alert(array); 
      } 
+2

確保您的參數是數字,而不是字符串。 – georg 2014-08-29 10:02:26

+0

是的,如果你將參數作爲字符串,那麼這個問題就會出現,因爲語句'i + = step' so'「2」+ =「2」'將在'222'之後返回'22',依此類推。 – Mritunjay 2014-08-29 10:03:58

+0

你可以隨便添加一個小提琴嗎? – Mritunjay 2014-08-29 10:09:08

回答

2

沒有錯,你的功能,你必須通過數字,如果傳遞的參數是字符串,將其更改爲數字,因爲我下面做的:

var array = new Array(); 
function getNumbers (min, max, step) { 
       var i; 
       for(i=min ; i<max ; i+=step){ 
       array.push(i); 
       alert(array); 
       } 
} 
//passing numbers: 
getNumbers(1, 10, 2); 
//output is 1,3,5,7,9 

//if your numbers are strings, use: 
var min = '1'; 
var max = '10'; 
var step = '2'; 
getNumbers(parseInt(min), parseInt(max), parseInt(step)); 
//this will work correctly 

DEMO

0

使用parseInt投以整數

0

我看到沒有問題的功能。除了數組未定義。

您可能將變量作爲字符串發送,這會導致連接而不是加法。

function getNumbers(min, max, step) { 
    var array = []; 
    for(var i = min ; i <= max ; i += step){ 
     array.push(i); 
    } 
    return array; 
} 

您可能還需要確保您在循環中使用i <= max,如果要包括最大。