JS中数组方法的封装之slice
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;
};
JS中数组方法的封装之slice的更多相关文章
- js中数组方法大全
js数组方法大全 一:前言 我们在学到js中数组的时候,我们会接触到js中数组的一些方法,这些方法对我们来说,可以很遍历的达到我们想要的结果,但是因为方法比较多,有些方法也不常用,可能会过一段时间就会 ...
- JS中数组方法小总结
1.array.concat(item……) 返回:一个新数组 该方法产生一个新数组,它包含一份array的浅复制,并把一个或多个参数item附加在其后.如果参数item是一个数组,那么它的每个元素会 ...
- js中数组方法及分类
数组的方法有很多,这里简单整理下常用的21种方法,并且根据它们的作用分了类,便于记忆和理解. 根据是否改变原数组,可以分为两大类,两大类又根据不同功能分为几个小类 一.操作使原数组改变 1.数组的 ...
- JavaScript -- 时光流逝(二):js中数组的方法
JavaScript -- 知识点回顾篇(二):js中数组的方法 1. 数组 (1)定义数组,数组赋值 <script type="text/javascript"> ...
- js中数组去重的几种方法
js中数组去重的几种方法 1.遍历数组,一一比较,比较到相同的就删除后面的 function unique(arr){ ...
- js中split()方法得到的数组长度
js 中split(",")方法通过 ”,“ 分割字符串, 如果字符串中没有 “,” , 返回的是字符串本身 var str = “abc”://分隔符个数为0 var newSt ...
- js中数组增删查改unshift、push、pop、shift、slice、indexOf、concat、join
js中数组增删查改unshift.push.pop.shift.slice.indexOf.concat.join
- js中数组去重方法及性能对比
js中数组的 数组去重 常用的数组去重方法以及效率分析: 首先我们先构建一个数组,主要是用于进行去重实验,我们主要实验的量级为1000,10000,100000,500000.具体的生成数组的方法如下 ...
- JS中数组的介绍
一.数组: 一组数据的集合: 二.JS中数组的特点: 1.数组定义时无需指定数据类型: 2.数组定义时可以无需指定数组长度: 3.数组可以存储任何类型的数据: 4.一般是相同的数据类型: 三.数组的创 ...
随机推荐
- Linux->Ubuntu配置tomcat开机自动启动
Ubuntu配置tomcat开机自动启动 我们有时候会有这样一个需求: 在开机的时候就启动一个服务,比如tomcat. 我们可以这样做: 将tomcat目录下/bin中的catalina.sh拷贝到/ ...
- Python初学者第十一天 文件处理_batch
11day 文件的操作分为读.写.修改 1.读: f = open(file='D:\新建文本文档.txt',mode='r',encoding='gbk') data = f.read() prin ...
- linux下如何用GDB调试c++程序
转:http://blog.csdn.net/wfdtxz/article/details/7368357 GDB 是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形 ...
- C# 解决组合优化问题
Google Optimization Tools介绍 Google Optimization Tools(OR-Tools)是一款专门快速而便携地解决组合优化问题的套件.它包含了: 约束编程求解器. ...
- 发布Hessian服务作为服务内部基础服务
摘要:Hessian经常作为服务内部RPC工具来使用,速度快效率高.重构代码的核心思想就是把共用的代码段提出来,使代码结构优化:架构设计类似,把基本的共用的服务提出来,使架构优化.下面讲述一下我在具体 ...
- Ubuntu16.04使用所遇问题记录
记录笔者在使用Ubuntu系统过程中所遇到过的错误/问题和解决方案.本机系统为Ubuntu 16.04 LTS,64-bit. 目前已有的解决方案: (1)Ubuntu安装搜狗输入法 (2)Windo ...
- Androidannotation使用之@Rest获取资源及用户登录验证(一)
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/NUPTboyZHB/article/details/24384713 简介: 上一篇博文简单的介绍了 ...
- 一. Selenium介绍
1. 什么是Selenium 是web自动化测试工具集,主要包括:IDE.Grid.RC(Selenium1.0).WebDriver(Selenium2.0) 与其他工具的不同: 一般的脚本测试工具 ...
- HDU 2082 找单词 (普通型 数量有限 母函数)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2082 找单词 Time Limit: 1000/1000 MS (Java/Others) Me ...
- Maven常用的构建命令
1.mvn -v 查看maven版本 2.mvn compile 编译项目,生成target文件夹,其中包含编译生成的字节码文件和测试报告.打开cmd,cd到项目的根目录,运行该命令如图所示(如果是第 ...