split/slice/splice-JavaScript

160 阅读1分钟
Array.prototype.slice([start[,end]])

浅拷贝从startend的数组元素,返回一个新数组

  • 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时,停止分割。