JavaScript基础教程 数组方法的封装之slice
沉沙 2018-08-08 来源 : 阅读 410 评论 0

摘要:本篇教程介绍了JavaScript基础教程 数组方法的封装之slice,希望阅读本篇文章以后大家有所收获,帮助大家对JavaScript的理解更加深入。

本篇教程介绍了JavaScript基础教程 数组方法的封装之slice,希望阅读本篇文章以后大家有所收获,帮助大家对JavaScript的理解更加深入。

<

slice方法的功能
// 1) : 数组的截取
// 2) :slice(m,n): 从数组索引m开始,截取到索引n,但是不包含n;[前包后不包]
// slice(m) : 从索引m开始,截取到末尾;
// slice():数组的克隆 slice(0);
// // 索引负数: 让当前length+负数;
// 3) : 返回值是截取的数组
// 4) : 原有数组不发生改变;
/**
* 首先:先分清楚slice有几种情况,slice的思想
* 传的参数可以是其他类型的数据,只要能转成有效数字就可以(所以参数的类型要求比较灵活)
* 其次,要注意的是只有第一个和第二个参数为有效参数,第三个及第三个以后的参数将对截取的结果不产生影响

 对参数的处理:
* 我们暂且把第一个参数给变量start,第二个参数给变量end
* 1.当参数1、参数2同时为undefined或者其中一个为undefined的情况下
* 情况1:参数1为undefined时,直接取start=0
* 情况2:参数2为undefined时,直接取end=this.length

 2.当参数1和参数2都不是undefined的情况下
* 情况1:当第一个参数为负数的情况下:start取this.length与参数中的最大值;当第一个参数大于等于0的情况下,start直接取自己
* 情况2:当第二个参数为负数的情况下,end取this.length与end的和;当参数大于0,end取this.length与end中的最小值

 对区间长度的处理:设置size=end-start
* 情况1:当区间长度小于等于0的情况下,直接返回空数组
* 情况2:当区间长度大于0的情况下,不管对于字符串还是数组,创建一个长度为size的数组,依次从start到end,赋值给新的数组,将新数组返回

 @type {Array}
*/
附上代码:
    
Array.prototype.mySlice = function (start,end) {
        var newAry = [];//创建一个变量用来接收返回值
        var len = this.length;//变量接收当前数组的长度
        //先对参数为undefined的情况进行处理
        start = (start !== undefined)?start:0;
        end = (end !== undefined)?end:len;
        //对于参数的处理,采用三目运算符,由于在与0判断的时候自动转换为数字再进行判断,所以直接与0比较即可
        start = (start>=0)?start:Math.max(0,len+start);
        end = (end>=0)?Math.min(end,len):len+end;
        var size = end - start;//用一个变量接收截取区间的长度
        if(size>0){
            //当区间长度大于0时,实例化一个长度为size的数组,并赋值给newAry
            newAry = new Array(size);
            //遍历数组,将当前数组[start,end)区间上的值依次赋值给newAry
            for(var i = 0;i<size;i++){
                newAry[i] = this[i+start];
            }
        }else{
            //当区间长度小于等于0的情况下,直接返回空数组
            return newAry;
        }
        return newAry;
    };    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标WEB前端JavaScript频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程