数组(字符串)使用slice方法的目的就是截取目标数组(字符串),通俗的来讲就是截取想要的。网上有很多slice方法的实例加以说明,在此主要是从特殊到一般对此方法进行了总结。

先说总结的方法,再看下面的例子进行理解。

假设已知一个数组长度为len,则参数的有效范围为[-len,len-1],-len和0为第一个元素的下标,-1和len-1表示最后一个元素的下标。slice()总共有两个参数,不填参数返回所有元素;若只填一个参数x,则x为起始元素的下标(起始元素一定会被截取),返回x之后的所有元素为新的数组(包括x),若x>=len,则返回空数组,即什么也没截取;若x<=-len||x=0,则截取全部;若填写两个参数x,y(x为起始元素下标值,y为结束元素下标值。注:不截取下标为y的元素);先列出能截取到元素的取值情况(有效范围内):x,y同号时(此处把0归为正),x<y;x,y异号时,x为正,y为负,则|x|+|y|<len;x为负,y为正,则|x|+|y|>len;有效范围外,x<len,y>-len。

以上包括所有情况,总的原则就是保证下标为y的元素要在x的后面才可截取。看下面例子加强理解

1、不填参数

 var arr = new Array("a","b","c","d");
console.log(arr.slice());//["a","b","c","d"]相当于截取全部

2、一个参数

 var arr = new Array("a","b","c","d");
console.log(arr.slice(2));//["c","d"];
console.log(arr.slice(-2));//["c","d"];
console.log(arr.slice(-5));//["a","b","c","d"]超出范围
console.log(arr.slice(5));//[]超出范围

3、两个参数

 var arr = new Array("a","b","c","d");//len = 4 有效[-4,3]
console.log(arr.slice(1,3));//["b","c"]包括b不包括d x<y
console.log(arr.slice(-3,-2));//["b"] x<y
console.log(arr.slice(0,-2));//["a","b"] |x|+|y|<4
console.log(arr.slice(-3,2));//["b"] |x|+|y|>4
console.log(arr.slice(4,2));//[] x>4 一定为空
console.log(arr.slice(-3,0));//[] y=0 一定为空
console.log(arr.slice(-3,-4));//[] y<=-4 一定为空
console.log(arr.slice(1,100));//["b","c","d"]y>len-1能取到最后一个元素

字符串与数组slice用法相似。

对于数组(字符串)slice方法的总结的更多相关文章

  1. 继承数组的slice方法

    <script> var arr=[1,2,3,4,5]; console.log(Array.prototype.slice.call(arr,1)); </script> ...

  2. 数组/字符串/ Math / 方法示例

    数组 Array concat  数组的合并 <script> var north = ["北京","上海","深圳"]; va ...

  3. slice方法可以将“类似数组的对象”变成真正的数组 (遇到时候再研究一次)

    典型的“类似数组的对象”是函数的arguments对象,以及大多数 DOM 元素集,还有字符串. // arguments对象 function args() { return arguments } ...

  4. slice splice(数组) 和 slice substr substring split (字符串)的区别

    array.slice(start,end)slice()如果不传入参数二,那么将从参数一的索引位置开始截取,一直到数组尾如果两个参数中的任何一个是负数,array.length会和它们相加 stri ...

  5. IE8及以下浏览器伪数组slice方法兼容处理

    前几天同事说数组的slice方法在IE8下有兼容问题,我查阅了MDN,文档里面有提到IE8及以下浏览器中,DOM对象组成的伪数组通过call调用slice方法没有遵循标准行为 我做了个demo在IE8 ...

  6. javascript中数组常用的方法

    在JavaScript中,数组可以使用Array构造函数来创建,或使用[]快速创建,这也是首选的方法.数组是继承自Object的原型,并且他对typeof没有特殊的返回值,他只返回'object'. ...

  7. Javascript数组Array的方法总结!

    1.join() 将数组的元素组成一个字符串,以分隔符连接,如果省略则默认逗号为分隔符,该方法只接收一个参数:分隔符.此方法不会改变原数组. let arr = [1,2,3,4] let arr1 ...

  8. JavaScript splice() 、slice() 方法

    定义和用法 splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目. slice() 方法可从已有的数组中返回选定的元素. 注释:该方法会改变原始数组. 语法 arrayObject. ...

  9. Jsの练习-数组常用方法 -slice()

    slice() 返回从原数组指定开始下标到结束下标之间的项组成的新数组. slice()方法可以接收一个或两个参数,即要返回项的起始和结束位置. 在只有一个参数的情况下,slice()方法返回从该参数 ...

随机推荐

  1. 理解pkg-config工具

    你在 Unix 或 Linux 下开发过软件吗?写完一个程序,编译运行完全正常,在你本机上工作得好好的,你放到源代码管理系统中.然后,告诉你的同事说,你可以取下来用了.这时,你长长的出了一口气,几天的 ...

  2. SGU 188.Factory guard

    模拟 code #include <iostream> #include <cstdio> #define LEN 1000 using namespace std; int ...

  3. mysql锁死的现象判断

    一般发生表锁死这种低级问题,就有两种情况:1.程序员水平太菜,2.程序逻辑错误. 一旦发生系统会出现超时,关键是有可能你看不到正在活动的php进程,而系统的慢查询日志也不会记录,只能通过show fu ...

  4. linux svn启动和关闭(转)

    1,启动SVN sudo svnserve -d -r /home/data/svn/ 其中 -d 表示守护进程, -r 表示在后台执行 /home/data/svn/  为svn的安装目录 2,关闭 ...

  5. 2 - Annotations标注

    下面是TestNG标注和参数的一个快速预览 @BeforeSuite 被标注的方法会在这个套件的所有测试执行之前执行  @AfterSuite 被标注的方法会在这个套件的所有测试执行之后执行 @Bef ...

  6. innerHtml写法

    swt_center = "<div id='new_swt_wee'>"; swt_center += '<a href="javascript:vo ...

  7. Python 的“+”和append在添加字符串时候的区别

    对于一个空的Python列表,往后添加内容有很多种,其中两种一个是用“+”直接添加内容,另外一种是Listname.append(x)来添加内容 其中,如果处理字符串 在使用“+”的时候,会将字符串拆 ...

  8. 那些年被我坑过的Python——玄而又玄(第六章 面向对象编程基础)

    面向对象编程: 面向对象顾名思义,就是把组织代码的粒度从函数级别抽象到对象级别,对象是通过类来生成的,类可以想象为模板或进本框架而对象是在原有模板或框架的基础上增加详细信息的实体,类,有分类.聚类的含 ...

  9. 用汇编语言研究C语言的全局变量、局部变量、参数、返回值放在哪里

    前提知识 c0s调用main函数的地址: 11ah main函数的连接地址: 01fah 一.全局变量与局部变量 测试程序 int a1,a2,a3; void f(void); void g(voi ...

  10. MySQL存储过程实例

    一.创建MySQL数据库函数 TCC:无参数,查询fruit表中的所有数据 : TAA:两个参数,查询fruit总共有多少行:查询ids为某个值时水果表的数据 TDD:两个参数,查询ids不等于某个值 ...