快速记忆复习 JavaScript 中字符串、数组常用 api

198 阅读3分钟

apis

本文所有参数括号以[]()表示,[]表示闭合区间,也就是包括当前参数,()表示开区间,表示不包括当前参数

字符串

截取指定字符串 slice、substring、substr

slice

截取字符串,不影响原先字符串,返回截取的字符串:str.slice[start,end) 注意:

  • 支持负数参数(start 要小于 end),-1 表示最后一个,依次类推;
  • 若未指定 end 参数,则截取到最后一个字符
const str = 'zhangkaiyi';
const newStr = str.slice(0, 1); // 'z'

substring

截取字符串,不影响原先字符串,返回截取的字符串:str.substring[start,end) 注意:

  • 不支持负数
  • 若未指定 end 参数,则截取到最后一个字符

substr

截取指定长度的字符串,不影响原先字符串,返回截取的字符串:str.substr[start,length]

注意:

  • 支持负数,-1 表示最后一个,依次类推;
  • 若未指定 length 参数,则截取到最后一个字符
const str = 'zhangkaiyi';
const newStr = str.substr(-3, 1); // 'i'

查找指定字符串 indexOf

indexOf

查找指定字符串在字符串中首次出现的位置,没有找到则返回 -1:str.indexOf(searchvalue,start] 注意:

  • start 可以指定从字符串的哪个字符开始查起
let str2 = 'zhangkaiyi';
let n = str2.indexOf('kai', 5); // 5

lastIndexOf

查找指定字符串在字符串中最后出现的位置,没有找到则返回 -1:str.lastIndexOf(searchvalue,end] 注意:

  • end 可以指定从字符串的哪个字符开始查起(从 1 计算,从后面开始数)
let str = 'zhangkaiyi';
let n = str.lastIndexOf('kai', 5); // 5
let n1 = str.lastIndexOf('kai', 4); // -1

数组

  • slicearr.slice[start,end)不影响原数组,不包含末尾,同字符串的 slice,返回被截取的元素数组

  • splice:删除或者增加,会改变原数组,删除时候返回被删除的元素,增加时候返回空数组 删除元素时候:arr.splice[start,length],两个参数,开始位置以及删除元素的长度 增加元素时候:arr.splice(start,0,item,item,item),从第三个元素开始全部加到数组中,也可以删除完再加,第二个参数不为 0 即可

  • unshift:往数组前面增加一个或者多个元素,返回新的长度,改变原数组

  • shift:删除数组第一个元素,返回删除的值,改变原数组

  • push:往数组后面增加一个或者多个元素,返回新的长度,改变原数组

  • pop:删除数组中最后一个元素,返回删除的值,改变原数组

  • map、filter、reduce 不会改变原数组,返回功能完之后的数组或者对应表达式

  • reverse(反转)、sort(排序) 改变原数组,并且返回改变后的数组

总结:

  • 截取操作,不会改变原数组
  • 截取操作,以开始结束下标作为截取的,一般 start 能取到,end 取不到,若以 start 开始,长度为截取长度的都能取到
  • 增删改操作,一般会改变原数组,删除时候返回的是删除的元素
  • 反转排序之类的操作也会改变原数组,返回改变之后的数组