[小笔记]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/de...
模拟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 ]
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)