[小笔记]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 ]