深究JavaScript——slice/splice/substring/substr

来源:互联网 发布:org.apache.shiro 编辑:程序博客网 时间:2024/04/30 03:08

数组slice/splice

slice()

        接受一或两个参数,返回起始到结束位置的新数组。slice()不会影响原数组。

        在只有一个参数的情况下,slice()方法从该参数指定位置起到当前数组末尾所有项。

  1. var arr1 = [1,2,3,4,5];
  2. var arr2 = arr1.slice(2);
  3. alert(arr1);    //[1,2,3,4,5]
  4. alert(arr2);    //[3,4,5]

         如果接受了两个参数:该方法返回起始位置到结束位置之间(不包括结束位置)指定的项。 

  1. var arr1 = [1,2,3,4,5];
  2. var arr2 = arr1.slice(2, 3);
  3. console.log(arr2);  //[3]

        如果参数中有个是负数,则用数组长度加上该附属来确定相应的位置。

  1. var arr1 = [1,2,3,4,5];
  2. var arr2 = arr1.slice(2, -1);  //相当于arr1.slice(2,4);
  3. console.log(arr2);  //[3, 4]

        如果结束位置小于起始位置,则返回空数组。

  1. var arr1 = [1,2,3,4,5];
  2. var arr2 = arr1.slice(3, -3);
  3. console.log(arr2);  //[]

splice()

        返回删除的项,始终都会返回一个数组,该数组中包含从原始数组中删除的项(如果没有删除任何项,则返回一个空数组)。

        删除:删除任意数量的项,指定2个参数:删除的起始位置和要删除的项数。

  1. var arr1 = [1,2,3,4,5];
  2. var arr2 = arr1.splice(0, 2);
  3. console.log(arr1);  //[3, 4, 5]
  4. console.log(arr2);  //[1, 2]

        插入:向指定位置插入任意数量的项,指定三个参数:起始位置,0,新插入的项。

  1. var arr1 = [1,2,3,4,5];
  2. var arr2 = arr1.splice(2, 0, 6, 7);
  3. console.log(arr1);  //[1, 2, 6, 7, 3, 4, 5]
  4. console.log(arr2);  //[]

        替换:向指定位置插入任意数量的项,且删除任意数量的项。指定3个参数:起始位置、不为0的项数、要插入任意数量的项。

  1. var arr1 = [1,2,3,4,5];
  2. var arr2 = arr1.splice(2, 2, 6, 7);
  3. console.log(arr1);  //[1, 2, 6, 7, 5]
  4. console.log(arr2);  //[3, 4]

字符串slice/substring/substr

slice()

        提取字符串的某个部分,并以新的字符串返回被提取的部分,不改变原字符串。

        只有一个参数,则返回从该参数指定的位置到当前字符串的部分。

  1. var str1 = "12345";
  2. var str2 = str1.slice(2);
  3. console.log(str1);    //12345
  4. console.log(str2);    //345

        如果是两个参数,则返回起始与结束参数(不包括结束参数)所指定的位置之间的部分。

  1. var str1 ="12345";
  2. var str2 = str1.slice(2, 4);
  3. alert(str1);    //12345
  4. alert(str2);    //34

        如果参数中,有负数存在,将字符串长度加上负数。

  1. var str1 ="12345";
  2. var str2 = str1.slice(2, -1);
  3. alert(str1);    //12345
  4. alert(str2);    //34

         如果结束位置小于起始位置,返回空字符串。

  1. var str1 ="12345";
  2. var str2 = str1.slice(3, 2);
  3. alert(str1);    //12345
  4. alert(str2);    //

substring()

        提取字符串中介于两个指定下标之间的字符,不改变原字符串。

       如果只有一个参数,则返回从该参数指定的位置到当前字符串结束的部分。

  1. var str1 = "12345";
  2. var str2 = str1.substring(3);
  3. console.log(str1);    //"12345"
  4. console.log(str2);    //"45"

        如果两个参数,则返回从该参数指定的位置到当前字符串的部分。

  1. var str1 = "12345";
  2. var str2 = str1.substring(3, 5);
  3. console.log(str2);    //"45"

        如果第二个参数比第一个参数大,自动回交换起始结束位置。如果任一参数小于 0 或为 NaN,则被当作 0。

  1. var str1 = "12345";
  2. var str2 = str1.substring(3, 2);
  3. console.log(str2);    //"3"

substr()

        在字符串中抽取从 start 下标开始的指定数目的字符。

        如果只有一个参数,则返回从该参数指定的位置到当前字符串的部分。

  1. var str1 = "12345";
  2. var str2 = str1.substr(2);
  3. console.log(str1);    //12356
  4. console.log(str2);    //345

         如果有两个参数,第二个参数代表需截取的位数不能为负数·。第一个参数若为负数,将其于字符串长度相加。

  1. var str1 = "12345";
  2. var str2 = str1.substr(-3, 2);
  3. console.log(str1); //12356
  4. console.log(str2); //34

        这三个方法都会返回被操作字符串的一个子字符串,而且也都接受一或两个参数。第一个参数指定子字符串的开始位置;slice()和substring()的第二个参数指定的是子字符串最后一个字符后面的位置,substr()的第二个参数指定的则是返回的字符个数。如果没有给这些方法传递第二个参数,则将字符串的长度作为结束位置。


1 0
原创粉丝点击