【问题标题】:JS/Node: A function that takes a number N and returns an array with the values [0, 1, ... N-1]JS/Node:一个函数,它接受一个数字 N 并返回一个具有值 [0, 1, ... N-1] 的数组
【发布时间】:2014-04-16 21:59:00
【问题描述】:

我很确定某个库/NPM 模块中存在这样的函数,唉,我试图找到一个失败了。

我正在这个 sn-p 中寻找与 range() 函数类似的东西:

 var a = range(4);
 expect(a).toEqual([0, 1, 2, 3]);

【问题讨论】:

    标签: javascript node.js npm


    【解决方案1】:

    http://underscorejs.org/#range

    _.range(10);
    => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    _.range(1, 11);
    => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    _.range(0, 30, 5);
    => [0, 5, 10, 15, 20, 25]
    _.range(0, -10, -1);
    => [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
    _.range(0);
    => []
    

    【讨论】:

      【解决方案2】:

      您可以使用此 oneliner 自己创建一个(来源:Creating range in JavaScript - strange syntax

      function range(end) {
          return Array.apply(null, {length: end}).map(Number.call, Number);
      }
      
      console.log(range(4));
      // [ 0, 1, 2, 3 ]
      

      【讨论】:

        【解决方案3】:

        下划线对范围的实现:

        function range(start, stop, step) {
            if (arguments.length <= 1) {
              stop = start || 0;
              start = 0;
            }
            step = arguments[2] || 1;
        
            var length = Math.max(Math.ceil((stop - start) / step), 0);
            var idx = 0;
            var range = new Array(length);
        
            while(idx < length) {
              range[idx++] = start;
              start += step;
            }
        
            return range;
          };
        

        用法:

        // stop 10
        range(10); //[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
        
        // start 5, stop 10
        range(5, 10); //[5, 6, 7, 8, 9]
        
        // start 1, stop 10, step 2
        range(1, 10, 2); //[1, 3, 5, 7, 9]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-11-08
          • 2022-07-03
          • 2021-05-19
          • 1970-01-01
          • 2022-01-17
          • 2020-05-31
          • 2012-04-14
          • 1970-01-01
          相关资源
          最近更新 更多