数组(字符串)使用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. hash表的建立和查找

    (1)冲突处理方法为:顺次循环后移到下一个位置,寻找空位插入.(2)BKDE 字符串哈希unsigned int hash_BKDE(char *str){/* 初始种子seed 可取31 131 1 ...

  2. Linux数据写操作改进

    Linux的IO操作中数据的写函数int nwrite = write(int fd,void* buf ,int len)表示向fd文件描述符写入len个字节长度的数据报文,但是这并不能保证真正向内 ...

  3. 解决nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed错误

    重新启动服务器,访问web服务发现无法浏览,登陆服务器之 后进到nginx使用./nginx -s reload重新读取配置文件,发现报nginx: [error] open() "/usr ...

  4. CSS让图片垂直居中的几种技巧 三种方法介绍

    在网页设计过程中,有时候会希望图片垂直居中的情况.而且,需要垂直居中的图片的高度也不确定,这就会给页面的布局带来一定的挑战.下面总结了一下,曾经使用过的几种方法来使图片垂直居中,除了第一种方法只限于标 ...

  5. JQuery jsonp使用小记

    在一个不支持PHP的主机上,需要对某些页面做访问统计.我的方案是在静态的HTML页面上,用JSONP向能够执行PHP的主机进行跨域请求,从而使用PHP解决这个访问量统计问题. 在服务器端,PHP页面返 ...

  6. JavaScript不可变原始值和可变的对象引用

    一.JavaScript不可变原始值 JavaScript中的原始值(undefined,null,布尔值,数字和字符串)与对象(包括了数组和函数)有着根本的区别.原始值是不可变的(undefined ...

  7. uboot的devices_init函数分析

    一.函数说明 函数功能: 完成设备的初始化 函数位置: common/devices.c 二.程序分析 int devices_init (void) { #ifndef CONFIG_ARM /* ...

  8. Javascript系列之js简介

    JavaScript是一种网络客户端脚本语言,javascript有三个组成部分: 1)核心(ECMAScript)---描述了语言的基本语法和对象 2)文档对象模型(DOM)---描述了处理网页内容 ...

  9. [BZOJ 2326] [HNOI2011] 数学作业 【矩阵乘法】

    题目链接:BZOJ - 2326 题目分析 数据范围达到了 10^18 ,显然需要矩阵乘法了! 可以发现,向数字尾部添加一个数字 x 的过程就是 Num = Num * 10^k + x .其中 k ...

  10. codeforces Minesweeper 1D

    题意:就是挖地雷,给你一个字符串,‘*’代表地雷,‘1’代表在它的周围有1个地雷,‘2’代表在左右都有个地雷,‘?’代表不确定是不是地雷,可以是1,2,*,问你最后有几种方式确定所有的的地雷. 思路: ...