slice(),splice(),split(),substring(),substr()使用方法和区别
《一》
1.slice();
Array和String对象都有
在Array中 slice(i,[j])
i为开始截取的索引值,负数代表从末尾算起的索引值,-1为倒数第一个元素
j为结束的索引值,缺省时则获取从i到末尾的所有元素
参数返回:
返回索引值从i到j的数组,原数组不改变
在String中 slice(i,[j])
参数说明:
i为开始截取的索引值,负数代表从末尾算起的索引值,-1为倒数第一个字符
j为结束的索引值,缺省时则获取从i到末尾的所有字符
2.splice()
存在Array中 方法向/从数组中添加/删除项目,然后返回被删除的项目。 该方法会改变原始数组
splice(index,howmany,item1,itemx )
index : 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
howmany: 必需。要删除的项目数量。如果设置为 0,则不会删除项目。
item1...itemX : 可选。向数组添加的新项目。
返回值 Array 包含被删除项目的新数组,如果有的话。
3.split()
在String中 split(separator,howmany)
separator:必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。
howmany: 可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。
返回值
一个字符串数组。该数组是通过在separator指定的边界处将字符串StringObject分割成子串创建的。返回的数组的字符串不包含separator自身
但是,如果 separator 是包含子表达式的正则表达式,那么返回的数组中包括与这些子表达式匹配的字串(但不包括与整个正则表达式匹配的文本)
与jion()函数相反效果
4.substring()
在String中 substring(start,stop)
start:表示子字符串的开始位置,
stop:表示结束结果。
注意:第二个参数应该大于第一个参数。如果出现第一个参数大于第二个参数的情况,substring方法会自动更换两个参数的位置。
4.substr()
在String中,substr(start,length);
start:子字符串的开始位置,
length:子字符串的长度。
《二》
1、slice:截取数组,返回截取到的新数组,不改变原有数组
arr.slice(start,end);
start:必需,从原数组的start位置开始截取(包括下标为start的元素)。start-为负数,表示从尾部开始截取。如-1表示最后一个元素,-2表示倒数第二个元素
end:可选,截取到的指定位置(不包括下标为end的元素)。没有指定,则截取到最后一个元素。end要大于start,否则截取不到元素
规则:
A、只传一个参数时,且是负数,且绝对值小于length,该负数会和length相加在截取
var a = [1,2,3,4];
var b = a.slice(-1); //b = [4] a = [1,2,3,4]
B、只传一个参数,且是负数,且绝对值大于大于等于length,则截取整个数组
var a = [1,2,3,4];
var b = a.slice(-4); //b = [1,2,3,4] a = [1,2,3,4]
C、只传一个参数,且是正数,且大于等于length,则返回空数组
var a = [1,2,3,4];
var b = a.slice(4); //b = [] a = [1,2,3,4]
D、只传一个参数,且是正数,小于length,从该参数的下标截取一直都数组尾
var a = [1,2,3,4];
var b = a.slice(1); //b = [2,3,4] a = [1,2,3,4]
E、传入两个参数,一正一负,负数先和length相加在截取
var a = [1,2,3,4];
var b = a.slice(1,-1); //b = [2,3] a = [1,2,3,4]
2、splice:从数组中添加、删除元素,改变原有数组,返回被删除的元素
删除元素
<script>
var arr = ['a','b','c','d'];
var delete = arr.splice(1,2) //从下标1开始,删除两个元素
console.log(arr); //a,d
console.log(delete) // b,c
</script>
添加元素
<script>
var arr = ['a','b','c','d'];
var delete = arr.splice(1,0,'e','f'); //0-表示没有删除元素
console.log(arr); // a,e,f,b,c,d
console.log(delete); //''-即返回空的数组,因为没有删除元素
</script>
3、split()用于把一个字符串切割为字符串数组,返回新的字符串数组,每个变量用”,“分隔,源字符串不改变
stringObject.split(seperator,howmany)
示例
1、按照不同方式分割字符串
var str = ''how are?;
console.log(str.split('')); //h,o,w,a,r,e,? ( seperator = '',则把每个字符都分割)
console.log(str.split(' '));//how,are?
console.log(str.split(' ',1));//how
《三》
区分 split, splice, slice
split是string类型特有的方法
var str = "bcadeafg";
str.split("a");// ["bc", "de", "fg"]
splice是属于Array类型特有的方法
var arr = [1,2,3,4,5];
删除元素:(删除index == 1位置处的1个元素)
console.log(arr.splice(1, 1));// [2](返回删除的数组)
console.log(arr);// [1, 3, 4, 5]
添加元素:(在index == 1的位置添加2个元素)
console.log(arr.splice(1, 0, 2));// []
console.log(arr);// [1, 2, 3, 4, 5]
slice方法string和Array都能用
var arr = [1,2,3,4,5];
console.log(arr.slice(1,3));// [2, 3]
console.log(arr);// [1, 2, 3, 4, 5]
var str = "abcdefg";
console.log(str.slice(1,3));// bc
console.log(str);// abcdefg
当然,区分这三种方法仅仅是个引子
通过这三个方法,我自然就想到了concat方法
concat方法和slice方法一样,同样是string和Array都能用
var arr = [1,2,3];
console.log(arr.concat(4,5));// [1, 2, 3, 4, 5]
var str = "abc";
console.log(str.concat("defg"));// abcdefg
说到这里又想到一个问题,就是在操作数组时哪些方法会对原数组进行修改,哪些不会呢?
这里作一个这方法的总结:
会修改原数组:
push, pop, shift, unshift, splice
会返回新的数组:
slice, concat
var arr = [1,2,3,4,5,8];
console.log(arr.pop());// 5(返回被删除的最后一个元素)
console.log(arr);// [1, 2, 3, 4, 5]
console.log(arr.push(9));// 6(返回压栈后的数组长度)
console.log(arr);// [1, 2, 3, 4, 5, 9]
console.log(arr.shift());// 1(返回被删除的第一个元素)
console.log(arr);// [2, 3, 4, 5, 9]
console.log(arr.unshift(0));// 6(返回加入队头后数组的长度)
console.log(arr);// [0, 2, 3, 4, 5, 9]
console.log(arr.splice(1, 1));// [2](返回删除的数组)
console.log(arr);// [0, 3, 4, 5, 9]
console.log(arr.splice(1, 0, 1, 2));// [](返回空数组)
console.log(arr);// [0, 1, 2, 3, 4, 5, 9]
console.log(arr.concat(10,11));// [1, 2, 3, 4, 5, 9, 10, 11]
console.log(arr);// [1, 2, 3, 4, 5, 9](说明concat并没有改变原来的数组)
console.log(arr.slice(1,3));// [2, 3]
console.log(arr);// [1, 2, 3, 4, 5, 9](说明slice并没有改变原来的数组)
slice方法和concat方法用于字符串:
var str = "1234";
console.log(str.concat("5678"));// 12345678
console.log(str);// 1234(说明concat并没有改变原来的字符串)
console.log(str.slice(1, 3));// 23
console.log(str);// 1234(说明slice并没有改变原来的字符串)
总结:
1.专属于数组操作的方法:
push, pop, shift, unshift, splice
2.专属于字符串操作的方法:
split, substring, substr
3.数组和字符串公用的方法:
slice, concat
4.当slice, concat用于操作数组时,不改变原数组
当push, pop, shift, unshift, splice操作数组时,则会对原数组进行修改
5.同样当slice, concat用于操作字符串时,不改变原字符串
substring, substr这些方法操作字符串的时候同样不会改变原字符串
《四》
1.slice(数组)
用法:array.slice(start,end)
解释:截取数组中的某段,并返回一个新的数组;
参数start:开始截取的索引 (取的到 =),
参数end: 结束的索引(取不到 < end)(可选)
//如果不传入参数二,那么将从参数一的索引位置开始截取,一直到数组尾
var a=[1,2,3,4,5,6];
var b=a.slice(0,3); //[1,2,3]
var c=a.slice(3); //[4,5,6]
//如果两个参数中的任何一个是负数,array.length会和它们相加,试图让它们成为非负数,举例说明:
//当只传入一个参数,且是负数时,length会与参数相加,然后再截取
var a=[1,2,3,4,5,6];
var b=a.slice(-1); //[6]
//当只传入一个参数,是负数时,并且参数的绝对值大于数组length时,会截取整个数组
var a=[1,2,3,4,5,6];
var b=a.slice(-6); //[1,2,3,4,5,6]
var c=a.slice(-8); //[1,2,3,4,5,6]
//当传入两个参数一正一负时,length也会先于负数相加后,再截取
var a=[1,2,3,4,5,6];
var b=a.slice(2,-3); //[3]
//当传入一个参数,大于length时,将返回一个空数组
var a=[1,2,3,4,5,6];
var b=a.slice(6); //[]
2.slice(字符串)
用法:string.slice(start,end)
解释:slice方法复制string的一部分来构造一个新的字符串,用法与参数匀和数组的slice方法一样
//举个简单的例子
var a="i am a boy";
var b=a.slice(0,6); //"i am a"
3.splice(数组)
用法:array.splice(start,deleteCount,item...)
解释:splice方法从array中移除一个或多个元素,并用新的item替换它们。参数start是从数组array中移除元素的开始位置。参数deleteCount是要移除的元素的个数。
如果有额外的参数,那么item会插入到被移除元素的位置上。它返回一个包含被移除元素的数组。
//举一个简单的例子
var a=['a','b','c'];
var b=a.splice(1,1,'e','f'); //a=['a','e','f','c'],b=['b']
此外splice与delete两者的区别,上篇文章有解释过。
js删除数组中的元素delete和splice的区别
4.split(字符串)
用法:string.split(separator,limit) 解码 字符串转数组
解释:split方法把这个string分割成片段来创建一个字符串数组。可选参数limit可以限制被分割的片段数量。separator参数可以是一个字符串或一个正则表达式。如果
separator是一个空字符,会返回一个单字符的数组。
//再举一个简单的例子
var a="0123456";
var b=a.split("",3); //b=["0","1","2"]
5.arr.join(separator) 编码 数组转字符串
解释:把数组中的元素按照参数中的字符串连接成一个字符串。
//举一个简单的例子
var arr = [2, 3, 4, 7];
console.log(arr.join('-'));//2-3-4-7
《五》
- slice :
定义:接收一个或两个参数,它可以创建一个由当前数组中的一项或多项组成的新数组,注意是新数组哦~ 也就是说它不会修改原来数组的值。
用法:slice( para1 ),会截取从para1开始的到原数组最后的部分;
slice(para1,para2)会截取原数组的从para1开始的para2-para1个数组。
注意:当两个参数中存在负数时,用原数组的长度加上两个负数的参数作为相应的参数来计算。
2. splice :
定义:强大的数组操作方法
用法 : splice( para1,para2 ) : 删除数组中任意数量的项,从para1开始的para2项。注意的是用splice删除数组中的值会直接将某几项从数组中完全删除,会导致数组length值的改变,这与delete的删除置为undefined是不一样的。
splice( para1,para2,val1,val2… ):项数组中添加和删除项,para1表示可以添加的项数,para2表示删除的项数,后面的变量表示要添加的项的值,注 意是从para1之后开始删除和添加的。
注意 : 参数为负数的问题,如果para1为负数,则会加上数组的长度作为para1的值,而para2为负数或0的话不会执行删除操作。
3.split : 根据特定的字符切割字符串并且返回生成的数组。
例如 : str = “s-aaa-sss-eee-www”;
targetArr = str.slite(“-”); //[‘s’,’aaa’,’sss’,’eee’,’www’]
《六》
字号
split:
split() 方法用于把一个字符串分割成字符串数组
2个参数:
1、字符串或者正则(以这个参数出现的位置进行分割)
2、长度,可选(设置此参数,分割数不会多于此参数,无此参数,即分割全部)
str="hello!how!are!you?"
arr2=str.split("!");
alert(arr2); //hello,how,are,you?
alert(arr2.length) //4
splice:
splice()方法用于对数组,删除添加和替换
三个参数:
1、起点,从数组第几个开始(从0开始算,包含它)
2、长度,对数组删除的长度(可以为0,即不删除)
3、添加的内容,可以是多个
返回值是被删除的元素,改变原数组
slice:
slice()方法用于返回从数组中返回的元素
2个参数:
1、起点,从这个起点开始(从0开始算,包含它)
2、结束点,到这个位置的前一个结束(即不包含它本身),未设置或者超出长度则默认到结尾
由于它有不改变原数组的特性,slice(0)可以深度拷贝一个简单数组;
下面2个例子再次了解下slice和splice的使用
//slice方法
var arr = [2, 3, 4, 5, 6]
arr.slice(0,2)
// [2, 3]
arr.slice(0,2)
// [2, 3]
arr.slice(0,2)
// [2, 3]
arr
// [2, 3, 4, 5, 6]//splice方法
var arr = [2, 3, 4, 5, 6]
arr.splice(0, 2)
// [2, 3]
arr.splice(0, 2)
// [4, 5]
arr.splice(0, 2)
// [6]
arr.splice(0, 2)
// []
arr
// []
slice(),splice(),split(),substring(),substr()使用方法和区别相关推荐
- slice,splice,split区别和作用
slice,splice,split区别和作用 slice(start,[end])方法:该方法是对数组进行部分截取,该方法返回一个新数组,参数start是截取的开始数组索引,end参数等于你要取的最 ...
- slice splice split
slice 从 start下标 开始,保留到 end下标 的前一个结束,如果没有 end,就保留到最后一个字符结束. 一:截取字符串 str.slice(start,end) let str = 'h ...
- JS中slice,splice,split的区别
1.slice : 定义:接收一个或两个参数,它能够建立一个由当前数组中的一项或多项组成的新数组,注意是新数组哦~ 也就是说它不会修改原来数组的值. 用法:slice( para1 ),会截取从par ...
- js中 slice , splice , split 的用法记录
1.slice不改变原数组 a.slice(1,5)删除数组从序号为1开始到序号为5(不包含序号为5)之间的元素 2.splice改变原数组 a.splice(1,3) 删除数组从序号为1的元素开始, ...
- js中截取字符串方法的区别
在截取字符串时常常会用到substr().substring().slice()这几个方法,经常会混淆它们之间的用法,所以今天特地总结一下. slice()方法 定义:接受一个或者两个参数,第一个参数 ...
- JS中数组和字符串具有的方法,以及substring,substr和slice的用法与区别
String 对象属性 属性 描述 constructor 对创建该对象的函数的引用 length 字符串的长度 prototype 允许您向对象添加属性和方法 String 对象方法 方法 描述 ...
- JavaScript笔记6(数组,foreach(),slice(),splice(),数组的剩余方法,函数的方法call和apply ,arguments,Date对象,Math,字符串的相关方法)
JavaScript 数组(Array) forEach(),slice(),splice() 数组的剩余方法 函数的方法call()和apply() arguments Date对象 Math 字符 ...
- slice,substring,substr的区别
1.都为正整数//例子数据 var arr = [1,2,3,4,5,6,7], var str = "helloworld!"; //注意这里有个!号也算一位若有空格,空格也算一 ...
- javascript中substring,substr和slice对比
javascript中substring,substr和slice对比 欢迎访问我的博客https://qqqww.com/,祝所有码农同胞们早日走上人生巅峰,迎娶白富美~~ 先写下最终结论,这样方便 ...
最新文章
- is 和 == 以及 编码和解码
- 吴裕雄--天生自然 人工智能机器学习实战代码:线性判断分析LINEARDISCRIMINANTANALYSIS...
- GitHub 仓库按大小排序
- 初学者学习java编程,如何顺利通过4大艰难阶段?
- 作为文本内容空格的HTML标签,HTML.fromHtml在文本末尾添加空格?
- 阿里一面,说说你对Mysql死锁的理解
- linux(Ubuntu)常用命令整理 -- 基础篇 -- 持续更新
- php json 特殊字符,PHP转义Json里的特殊字符的函数
- VGG16迁移学习,实现医学图像识别分类工程项目
- 项目管理实例—— 点评
- 2010多校第一题 hdu3440House Man 差分约束系统
- Google Chrome抓包分析详解
- apdu 移动sim_SIM卡APDU指令【转】
- 宽带伤不起:大学教授称内地宽带费为香港400倍
- 倍福--控制步进电机
- linux dm9000驱动分析,ARM-Linux驱动--DM9000网卡驱动分析(二)
- linux添加usb扫描枪,抓取扫描枪扫描数据的案例
- Python基础(编码格式、文件、目录)
- 逐个点评国奥球员_原水_新浪博客
- html中的项目符号和编号,CSS重新定义项目符号和编号
热门文章
- vivo X90、vivo X90 Pro和vivo X90 Pro+的区别 参数对比哪个好
- PADS9.5—layout中导入.asc文件时遇到的问题
- 交换机/路由器实验:最后说些什么
- 华为过程可信cib是指_华为EMUI10取消IMEI?数字联盟可信ID——更可靠的移动设备唯一标识...
- Python 给视频添加水印
- LumaFusion剪辑视频
- 吃白菜一样用micropython玩esp32(四)—— siri远程控制点灯
- 如何在oracle官网下载ojdbc8,想不想在maven里直接下载ojdbc这个jar?
- 2021年数学建模国赛湖北赛区推荐国奖名单
- Android自动化测试应用:uiautomatorviewer工具的安装与使用