[小笔记]TypeScript/JavaScript模拟Python中的Range函数

[小笔记]TypeScript/JavaScript 模拟Python中的Range函数

邮箱 :
主页
本文地址
在Python3中range() 接收1到3个参数,返回一个可迭代对象称之为range序列,而在Python2中返回的是一个列表。在Python中的列表、元组、range序列称之为Python3的三大序列。但从使用上来,对于range函数被没有太大影响。为了模拟range函数,这里我们以数组作为range的返回类型模拟Python的range函数。

TypeScript

// range()函数的实现
export function range(x:number):number[];                  // end
export function range(x:[number]):number[];                // [end]
export function range(x:[number,number]):number[];         // [start, end]
export function range(x:[number,number,number]):number[];  // [start, end, step]
export function range(x: string | number | any[]){
          
   
    let ar:number[] = [];
    if(typeof x ===number){
          
   
      
      for(let i=0; i<x; i++){
          
   
        ar.push(i)
      }
    }else if(x instanceof Array){
          
   
      if(x.length==1){
          
   
          /**重载:传入数组只有1个元素 */
          for(let i=0; i<x[0]; i++){
          
   
              ar.push(i)
          }

      }else if(x.length == 2){
          
   
          /**重载:传入2元素数组 */
          for(let i=x[0]; i<x[1]; i++){
          
   
              ar.push(i);
          }
      }else if(x.length==3){
          
   
          /**重载:传入3元素数组 */
          for(let i=x[0]; i<x[1]; i+=x[2]){
          
   
              ar.push(i);
          }
      }
    }
    return ar;
}

JavaScript

function range(x) {
          
   
    var ar = [];
    if (typeof x === number) {
          
   
        for (var i = 0; i < x; i++) {
          
   
            ar.push(i);
        }
    }
    else if (x instanceof Array) {
          
   
        if (x.length == 1) {
          
   
            /**重载:传入数组只有1个元素 */
            for (var i = 0; i < x[0]; i++) {
          
   
                ar.push(i);
            }
        }
        else if (x.length == 2) {
          
   
            /**重载:传入2元素数组 */
            for (var i = x[0]; i < x[1]; i++) {
          
   
                ar.push(i);
            }
        }
        else if (x.length == 3) {
          
   
            /**重载:传入3元素数组 */
            for (var i = x[0]; i < x[1]; i += x[2]) {
          
   
                ar.push(i);
            }
        }
    }
    return ar;
}

用例1

console.log(range(5));

Out[]:

[ 0, 1, 2, 3, 4 ]

用例2

console.log(range([5]));

Out[]:

[ 0, 1, 2, 3, 4 ]

用例3

console.log(range([2,7]));

Out[]:

[ 2, 3, 4, 5, 6 ]

用例4

console.log(range([2,7,3]));

Out[]:

[ 2, 5 ]
经验分享 程序员 微信小程序 职场和发展