【问题标题】:Map returns Empty statement arrayMap 返回 Empty 语句数组
【发布时间】:2022-06-17 23:17:21
【问题描述】:

我有这个功能

function getDaysArray(days: number): number[] {
        return [...new Array(days)].map((_x, i) => {
            return i + 1;
        });
}

它应该按月返回一个天数组, 例如,如果我登录 getDaysArray(31) 我希望有一个这样的数组

[1,2,...,31]

但相反,我得到了这个:

[empty × 31]

有人知道发生了什么吗?

【问题讨论】:

    标签: javascript arrays typescript array.prototype.map


    【解决方案1】:

    你可以这样做

    function getDaysArray(days) {
            return Array.from({length: days}).map((_, i) => i + 1)
    
    }
    
    console.log(getDaysArray(31))

    【讨论】:

      【解决方案2】:

      您正在创建数组的一个实例并在内存中保留x 位置,但没有用某些东西填充每个位置。

      你可以把你的函数变成:

      function getDaysArray(days: number): number[] {
              return [...new Array(days).fill(null)].map((_x, i) => {
                  return i + 1;
              });
      }
      

      这应该返回正确的结果。注意new Array后使用.fill方法

      【讨论】:

        【解决方案3】:

        当您执行new Array(10) 时,您实际上使用 [empty * 9, 10] 创建了一个数组 并且地图只会在数组[10]

        一个技巧是用你想要的长度创建一个空字符串,然后填充它。

        [...''.padEnd(10)].map((_,i)=>i+1)

        function getDaysArray(days: number): number[] {
                return [...''.padEnd(10)].map((_,i)=>i+1);
        }
        
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-08-16
          • 1970-01-01
          • 2015-12-14
          • 1970-01-01
          • 1970-01-01
          • 2018-01-01
          • 1970-01-01
          相关资源
          最近更新 更多