Array.prototype.slice([start[,end]])
浅拷贝从start到end的数组元素,返回一个新数组
-
start:开始处的索引[可选] (从0开始)当
start<0,表示开始的索引是从倒数开始的var array=[0,1,2,3,4]; var newArray=array.slice(-2);//[3,4]如果省略
start,表示从0开始如果
start>array.length,返回空数组 -
end:终止处的索引。返回的数组元素不包括end位置上的元素var array=[0,1,2,3,4]; var newArray=array.slice(1,4);//[1,2,3]end<0,表示从倒数第几个元素结束(同start)end省略,默认到数组末尾end>array.length,默认到数组末尾
浅拷贝:
若复制的元素为对象引用,当对象改变时,返回的数组中的元素也会改变。
若赋值的元素是普通类型,不影响。
将类数组转为数组
只要将要转换的类数组对象绑定到slice方法上就行。(call,apply)
Array.prototype.slice.call(arguments);
//或者
[].slice(arguments);
String.prototype.slice(start[,end])
将start到end位置的子字符串提取出来,返回一个新字符串。
具体用法与Array的slice完全一致。
Array.prototype.splice(start[,deleteConut[,item1[,item2...]]])
在原数组上删除,替换或添加元素,返回被删除元素形成的数组。
-
start:开始修改的位置。(从0开始)
start>array.length,从数组末尾开始修改start<0,从末尾的倒几位开始修改start<0&&Math.abs(start)>array.length,从0开始,表明从结尾开始倒到0都没到开始位置,只能从0开始了。var array=[1,2,3,4,5]; var deleteArr1=array.splice(-5);//[1,2,3,4,5] var deleteArr2=array.splice(-6);//[1,2,3,4,5] -
deleteCount:要删除的数组的个数deleteCount省略||deleteCount>array.length-start,会删除start后面的所有数deleteCount<0||=0,不删除,相当于要添加元素 -
item1,item2....:要添加进数组的元素,不指定,就不添加。var array=[1,2,3,4,5]; var deleteArr1=array.splice(2,1,"add");//[3] console.log(array);//[1,2,"add",4,5]
String.prototype.split([seperator,[limit]])
使用指定的分割符seperator将字符串分割成子字符串数组。
-
seperator:字符串/正则表达式
seperator省略,返回只有一个由原字符串组成元素的数组
var string="this is a string "; var newString=string.split();//["this is a string"]seperator='',将原字符串每个字符以数组形式返回/*返回值: [ 't', 'h', 'i', 's', ' ', 'i', 's', ' ', 'a', ' ', 's', 't', 'r', 'i', 'n', 'g', ' ' ] */ var string="this is a string "; var newString=string.split(''); -
limit:限定返回分割片段数。当分割数>limit时,停止分割。