为什么这个函数返回一个空数组?

时间:2017-08-24 12:17:05

标签: javascript arrays function for-loop

我只是不明白为什么这个函数会返回一个空数组而不是newArr = [1,2,3等],具体取决于数组的长度。

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


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

      return newArr;
 };

4 个答案:

答案 0 :(得分: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。< / p>

答案 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)

答案 2 :(得分: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))

答案 3 :(得分: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 ]