【问题标题】:Why is this function returns an empty array?为什么这个函数返回一个空数组?
【发布时间】:2017-08-24 12:17:04
【问题描述】:

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

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


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

      return newArr;
 };

【问题讨论】:

  • 你是怎么调用这个函数的?
  • randomFunction(8) ;例如
  • 数字没有长度方法。如果参数是数字,则使用i&lt;num 而不是num.length
  • i &lt; num 这就是你想要循环的内容
  • @klarate 那你做错了。看我的回答。

标签: javascript arrays function for-loop


【解决方案1】:

如果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);

此外,您可能希望使用 &lt;= 而不是 &lt;,以防您希望以 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)
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        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 ]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-26
          • 1970-01-01
          相关资源
          最近更新 更多