博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自己实现一个数组的slice方法
阅读量:5298 次
发布时间:2019-06-14

本文共 1359 字,大约阅读时间需要 4 分钟。

Array.prototype.mySlice = function mySlice() {    var n = arguments[0], m = arguments[1], newAry = [];    n = n === undefined ? 0 : (isNaN(n) ? 0 : (n >= 0 ? (n < this.length ? Math.floor(Number(n)) : this.length) : (n < -this.length ? 0 : (n <= -1 ? this.length + Math.ceil(Number(n)) : 0))));    m = m === undefined ? this.length : (isNaN(m) ? 0 : (m >= 0 ? (m < this.length ? Math.floor(Number(m)) : this.length) : (m < -this.length ? 0 : this.length + Math.ceil(Number(m)))));    while (n < m) {        newAry[newAry.length] = this[n];        n++;    }    return newAry;};

以下是测试代码,和原生的数组slice方法,功能一致。

var ary = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];function compare(n, m) {    console.log(n, m, ary.slice(n, m), 'VS', ary.mySlice(n, m));}compare(0, -5);compare(0, -1.5);compare(-1.5);compare(-0.1);compare(-0.1, 5);compare(0);compare(undefined, "undefined");compare(undefined, undefined);compare("undefined", undefined);compare(100, undefined);compare(-100, undefined);compare(10, undefined);compare(-10, undefined);compare(-10);compare(NaN, NaN);compare(NaN, undefined);compare(undefined, NaN);compare(2, 1);compare(-12, 13);compare(3, 18);compare(0, 0);compare(-200);compare(1, 1);compare(-1, undefined);compare(-1, 1000);compare(2, undefined);compare(123, 123, 123);compare(0, 123);compare(13, undefined)

转载于:https://www.cnblogs.com/changzhenan/p/7214005.html

你可能感兴趣的文章
华为手机在开发Android调试时logcat不显示输出信息的解决办法
查看>>
TCP 建立连接为什么要握 3 次手?
查看>>
android:ToolBar详解
查看>>
window.print 打印指定 div
查看>>
拼多多2018/8/5算法工程师笔试
查看>>
【LINUX】——FreeBSD中的一些常规配置
查看>>
GreenDao3.0新特性解析(配置、注解、加密)
查看>>
JSON数组分配输出每个li
查看>>
request属性 request.getAttribute()
查看>>
Android应用开发基础篇(16)-----ScaleGestureDetector(缩放手势检测)
查看>>
iOS状态栏变文字颜色改变
查看>>
Entity framework code first
查看>>
Vue中登录模块
查看>>
正则表达式1--特殊字符
查看>>
python基础(四)
查看>>
2018 ACM南京网络赛H题Set解题报告
查看>>
深入理解JS立即执行函数
查看>>
python基础知识学习:列表和元组
查看>>
Django logging配置
查看>>
iOS开发日记6-跳转appStore评分
查看>>