2017-08-24 246 views
1

我只是不明白为什么这个函数根据数组的长度返回一个空数组而不是newArr = [1,2,3等]。为什么这个函数返回一个空数组?

function randomFunction(num) { 
     var newArr = []; 


     for(var i = 1; i < num.length; i++) { 
      newArr.push(i); 
    } 

     return newArr; 
}; 
+2

你是如何调用这个函数的? –

+0

randomFunction(8);例如 – klarate

+2

数字没有长度方法。如果参数是数字,请使用'i marmeladze

回答

4

如果num应该是新的数组的长度,和的值的范围的最后一个号码,你必须直接使用它,而是采用length(其意味着要被用于一个阵列):

function randomFunction(num) { 
 
    var newArr = []; 
 

 
    for(var i = 1; i <= num; i++) { 
 
     newArr.push(i); 
 
    } 
 

 
    return newArr; 
 
}; 
 

 
var array = randomFunction(5); 
 
console.log(array);

此外,您可能希望使用<=代替<,如果你想开始由1的值并通过n,而不是n - 1

2
function randomFunction(num) { 
     var newArr = []; 


     for(var i = 1; i < num /* number has no length */; i++) { 
      newArr.push(i); 
    } 

     return newArr; 
}; 

ES6替代为乐趣:

return new Array(num).fill().map((r, i) => i) 
1

randomFunction(8);例如

一个数字根本没有长度。这已经是一种价值。

根本不需要长度属性。只是

for(var i = 1; i < num; i++) { 
     newArr.push(i); 
    } 

function randomFunction(num) { 
 
    var newArr = []; 
 

 
    for (var i = 1; i < num; i++) { 
 
     newArr.push(i); 
 
    } 
 

 
    return newArr; 
 
}; 
 
console.log(randomFunction(8))

1

num已经是一个数字。你不需要使用.lenght属性

function randomFunction(num) { 
     var newArr = []; 


     for(var i = 1; i <= num; i++) { 
      newArr.push(i); 
    } 

     return newArr; 
}; 
randomFunction(5); // [ 1, 2, 3, 4, 5 ] 
相关问题