js 常用的操作字符串和数组的几种方法

目录

  • 字符串:
    1、split:把字符串分割为字符串数组;
    2、indexOf(lastIndexOf):从前往后检索字符串(从后往前检索字符串);
    3、charAt:返回在指定位置的字符;
    4、substring:提取字符串中两个指定的索引号之间的字符;

  • 数组和字符串都有的方法:
    5、slice:提取字符串的片断,并在新的字符串中返回被提取的部分;从某个已有的数组返回选定的元素。

  • 数组:
    6、concat:连接两个或更多的数组,并返回结果。
    7、join:把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔;
    8、reverse:颠倒数组中元素的顺序
    9、splice:向/从数组中添加/删除项目,然后返回被删除的项目。该方法会改变原始数组。

示例

1、split:stringObject.split(separator,howmany)
参数 描述
separator 字符串或正则表达式,从该参数指定的地方分割stringObject
howmany 可选,该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。

返回:一个字符串数组。该数组是通过在 separator 指定的边界处将字符串 stringObject 分割成子串创建的。返回的数组中的字串不包括 separator 自身。

let str="How are you doing today?"
let str1 = str.split(" ");
let str2 = str.split(" ",3);
console.log(str1); // ["How", "are", "you", "doing", "today", "?"]
console.log(str2); // ["How", "are", "you"]
2、indexOf、lastIndexOf:stringObject.indexOf(searchvalue,fromindex)stringObject.lastIndexOf(searchvalue,fromindex)
参数 描述
searchvalue 必需。规定需检索的字符串值。
fromindex 可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的首字符开始检索。
  • indexOf:从前往后检索;
  • lastIndexOf:从后往前检索。如果在 stringObject 中的 fromindex 位置之前存在 searchvalue,则返回的是出现的最后一个 searchvalue 的位置

返回searchvalue在stringObject中的位置,若没有,则返回-1;若有多个,如果不是用正则表达式全局匹配,则返回匹配到的第一个。
注:对大小写敏感。

let str="How are you doing today ?"
let index1 = str.indexOf("o");
let index2 = str.indexOf("w",7);
let index3 = str.lastIndexOf("o");
let index4 = str.lastIndexOf("w",7);
console.log(index1); //  1 :返回匹配到的第一个o的位置
console.log(index2); // -1 :从7开始检索,检索不到返回-1
console.log(index3); //  19
console.log(index4); // 2:在位置7之前就存在w,所以返回的是最后一个w的位置
3、charAt:stringObject.charAt(index)
参数 描述
index 必需。表示字符串中某个位置的数字,即字符在字符串中的下标。

注:字符串中第一个字符的下标是 0。如果参数 index 不在 0 与 string.length 之间,该方法将返回一个空字符串。

let str="How are you doing today ?"
let str1 = str.charAt(6);
console.log(str1); //  e
4、substring:stringObject.substring(start,stop)
参数 描述
start 必需。一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置。
stop 可选。一个非负的整数,比要提取的子串的最后一个字符在 stringObject 中的位置多 1。如果省略该参数,那么返回的子串会一直到字符串的结尾。(结束的位置不包含stop)
  • 返回一个新的字符串,包括 start 处的字符,但不包括 stop 处的字符。
    如果参数 start 与 stop 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)。如果 start 比 stop 大,那么该方法在提取子串之前会先交换这两个参数。
let str="How are you doing today ?"
let str1 = str.substring(6);
let str2 = str.substring(2,7);
console.log(str); // How are you doing today ?
console.log(str1); // e you doing today ?
console.log(str2); // w are
5、slice:stringObject.slice(start,end)arrayObject.slice(start,end)

String.slice() 与 Array.slice() 相似。

参数 描述
start 要抽取的片断的起始下标。如果是负数,则该参数规定的是从字符串的尾部开始算起的位置。也就是说,-1 指字符串的最后一个字符,-2 指倒数第二个字符,以此类推。
end 紧接着要抽取的片段的结尾的下标。若未指定此参数,则要提取的子串包括 start 到原字符串结尾的字符串。如果该参数是负数,那么它规定的是从字符串的尾部开始算起的位置。
  • 返回一个新的字符串。包括字符串 stringObject 从 start 开始(包括 start)到 end 结束(不包括 end)为止的所有字符。
let str="How are you doing today ?"
let str1 = str.slice(6);
let str2 = str.slice(2,7);
let str3 = str.slice(-4);
console.log(str); // How are you doing today ?
console.log(str1); // e you doing today ?
console.log(str2); // w are
console.log(str3); // ay ?
let arr = ["how","are","you","today"];
let arr1 = arr.slice(1);
let arr2 = arr.slice(1,2);
let arr3 = arr.slice(-3,-1);
console.log(arr); // ["how", "are", "you", "today"]
console.log(arr1); // ["are", "you", "today"]
console.log(arr2); // ["are"]
console.log(arr3); // ["are", "you"]
  • 注:
    1.slice() 比较灵活些,参数可以为负数,如果起始位置为负数,则从字符串最后一位向前找对应位数并且向后取结束位置,如果为正整数则从前往后取起始位置到结束位置。
    2.substring()只能非负整数,截取起始结束位置同slice()函数一致。
    以上三种函数未填第二参数时,自动截取起始位置到字符串末尾。
6、concat:arrayObject.concat(arrayX,arrayX,......,arrayX)

stringObject.concat() 与 Array.concat() 相似,但是对于字符串来说,使用+运算符来连接会比stringObject.concat()简单快速得多

参数 描述
arrayX 必需。该参数可以是具体的值,也可以是数组对象。可以是任意多个。
  • 返回一个新的数组。该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的。如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。
let arr = ["how","are","you","today"];
let arr1 = arr.concat(1,2);
let arr2 = [4,5,6];
let arr3 = arr1.concat(arr2)
console.log(arr); // ["how", "are", "you", "today"]
console.log(arr1); // ["how", "are", "you", "today", 1, 2]
console.log(arr3); // ["how", "are", "you", "today", 1, 2, 4, 5, 6]
7、join:arrayObject.join(separator)
参数 描述
separator 可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。
  • 返回一个字符串。该字符串是通过把 arrayObject 的每个元素转换为字符串,然后把这些字符串连接起来,在两个元素之间插入 separator 字符串而生成的。
let arr = ["how","are","you","today"];
let str1 = arr.join();
let str2 = arr.join('');
let str3 = arr.join('-');
console.log(str1); // how,are,you,today
console.log(str2); // howareyoutoday
console.log(str3); // how-are-you-today  
8、join:arrayObject.reverse()

注:该方法会改变原来的数组,而不会创建新的数组。

let arr = ["how","are","you","today"];
arr.reverse();
console.log(arr); // ["today", "you", "are", "how"]
9、join:arrayObject.splice(index,howmany,item1,.....,itemX)

splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改。

参数 描述
index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。
item1,.....,itemX 可选。向数组添加的新项目。
9.1、向数组中添加元素
let arr = ["how","are","you","today"];
let arr1 = arr.splice(2,0,'a');
console.log(arr); // ["how", "are", "a", "you", "today"]
console.log(arr1) // []
9.2、替换数组中某个位置的元素
let arr = ["how","are","you","today"];
let arr1 = arr.splice(2,1,'a');
console.log(arr); // ["how", "are", "a", "today"]
console.log(arr1) // ["you"]
9.3、删除数组中的元素
// 指定删除个数
let arr = ["how","are","you","today"];
let arr1 = arr.splice(2,1);
console.log(arr); // ["how", "are", "today"]
console.log(arr1) // ["you"]

// 不指定删除个数,则从index开始删到结尾
let arr = ["how","are","you","today"];
let arr1 = arr.splice(2);
console.log(arr); // ["how", "are"]
console.log(arr1) // ["you", "today"]

// 删除指定个数,并且添加元素(等同于:用添加的元素来代替所需要删除的元素)
let arr = ["how","are","you","today"];
let arr1 = arr.splice(1,3,'a','b');
console.log(arr); // ["how", "a", "b"]
console.log(arr1) // ["are","you", "today"]

参考文章:
1、JavaScript String 对象
2、JavaScript Array 对象

你可能感兴趣的:(js 常用的操作字符串和数组的几种方法)