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

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

jcLee 的 CSDN 博客
邮箱 :291148484@163.com
CSDN 主页https://blog.csdn.net/qq_28550263?spm=1001.2101.3001.5343
本文地址https://blog.csdn.net/qq_28550263/article/details/118573631

在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 ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jcLee95

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值