面试官:请说一下 JS 中字符串和数组常用的方法

401 阅读8分钟

数组和字符串的方法

图片来源网络,仅作配文使用

欢迎关注微信公众号【前端功成屋】分享一些前端技术、面试题、面试技巧

字符串常用方法

根据索引值查找字符串的值

string.charAt(index) 返回给定位置的那个字符值

  • 参数:index 指的是字符串中某个位置的数字,即字符在字符串中下标
  • 返回值:字符串 string 的第 index 个索引对应的字符
  • ’abc’.charAt(2) // c
    

根据字符值查找所引值

string.indexOf(substring, start) 从一个字符串搜索指定的子字符串,返回子字符串的位置(没有找到返回 -1)

  • 参数:
    • substring:要在字符串 string 中检索的子串
    • start:一个可选的整数参数,声明了在字符串 string 中开始检索的位置。它的默认值为 0,从字符串的第一个字符开始检索。
  • 返回值:在 string 中的 start 位置之后,substring 第一个值在 string 中第一次出现的位置。如果没有找到,则返回 -1
  • ‘abcdefghijk’.indexOf(’abc’, 5) // -1
    

string.lastIndexOf(substring, start) 从后向前检索一个子字符串

  • 参数同上
  • 返回值:在 string 中的 start 位置之前,substring 第一个值在 string 中第一次出现的位置,如果没有找到,则返回 -1

string.search() 检索与正则表达式相匹配的子串

  • 参数:
    • regexp 要在字符串 string 中检索的 RegExp 对象,该对象具有指定的模式
    • 如果该参数不是 RegExp 对象,则首先将它传递给 RegExp() 构造函数,把它转换成 RegExp 对象。
  • 返回值:string 中第一个与 regexp 相匹配的子串的起始位置。如果没有找到任何匹配的子串,则返回 -1
  • ’abcdefg’.search(‘de’) // 3
    

截取字符串的方法

string.slice(start, end) 截取一个子串

  • 参数:
    • start:索引开始的位置。倒着数的话为负数,-1 代表最后一位的索引
    • end:索引结束的位置。如果没有,默认截取到最后一位
    • 返回值:
      • 一个新字符串
      • start 开始(包括 start)到 end 为止(不包括 end )的所有字符
    • ’abcdefghijklm’.slice(2, 5) // ‘ced’
      

string.substr(start, length) 抽取一个子串

  • 参数:
    • start:索引开始的位置。倒着数的话为负数,-1 代表最后一位的索引。
    • length:子串的字符数。如果没有指定 length,返回的字符串包含从 start 到结尾的字符。
  • 返回值:
    • 一个新字符串
    • stringstart 处(包括 start 所指的字符)开始的 length 个字符
  • ’hello world’.substr(3, 7) // ‘lo worl’
    

string.substring(from, to) 返回字符串的一个子串

  • 参数:
    • from:一个整数,截取开始的索引位置
    • to:索引结束的位置。如果没有,默认截取到最后一位
  • 返回值
    • 一个新字符串,其长度为 to-from,从 from 开始(包括 from )到 to 为止(不包括 to )的所有字符
  • ’hello world’.substring(3, 7) // ‘lo w’
    

字符串替换

string.replace(regexp, replacement)

  • 字符串 string 的方法 replace() 执行的是查找并替换的操作
  • 参数:
    • regexp:声明了要替换的模式的 RegExp 对象。如果该参数是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换成 RegExp 对象。
    • replacement:一个字符串,声明的是替换文本或生成替换文本的函数
  • ’abcdefg’.replace(‘ab’, ‘cd’) // ‘cdcdefg’
    

字符串的遍历查找

string.match(regexp) 找到一个或多个正则表达式的匹配

  • 返回值:存放匹配的数组
  • ’abced’.match(‘a’) // [‘a’]
    

字符串转化为数组

string.split(delimiter, limit) 将字符串分割成字符串数组

  • 参数:
    • delimiter必须有! 字符串或正则表达式,从该参数制定的分割 string
    • limit:这个可选的整数制定了返回的数组的最大长度
    • 如果设置了该参数,返回的子串不会多于这个参数制定的数字
    • 如果没有设置该参数,整个字符串都会被分割,不考虑它的长度
  • 返回值:一个字符串数组,是通过在 delimiter 指定的边界处将字符串 string 分割成子串创建的。返回的数组中的子串不包括 delimiter 自身
  • 注意String.split() 执行的操作与 Array.join() 执行的操作相反。
  • ’abc’.split(‘’) // [‘a’, ‘b’, ‘c’]
    

数组中常用的方法

图片来源网络,仅作配文使用

往数组里增加项

array.push(value, ...) 给数组最后添加一个或多个元素

  • 参数:value,要添加到 array 尾部的值,可以是一个或多个
  • 返回值:把指定的值添加到数组后数组的新长度

array.unshift(value, ...) 给数组最前面添加一个或多个元素

  • 参数:value,要插入数组头部的一个或多个值
  • 返回值:把指定的值添加到数组后数组的新长度

从数组里删除项

array.pop() 删除并返回数组的最后一个元素

  • 参数:无
  • 返回值:array 的最后一个元素
  • 方法 pop() 将删除 array 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值。
  • 如果数组已经为空,则 pop() 不改变数组,返回 undefined

array.shift() 将数组中的第一个元素移出数组

  • 参数:无
  • 返回值:数组原来的第一个元素
  • 方法 shift() 将把 array 的第一个元素移出数组,返回那个元素的值,并且将余下的所有元素前移一位,以填补数组头部的空缺。
  • 如果数组是空的,shift() 将不进行任何操作,返回 undefined
  • 方法 shift() 和 方法 pop() 相似,只不过它在数组头部操作,而不是在尾部操作。该方法常常和 unshift() 一起使用

更改数组项

array.reverse() 颠倒数组中元素的顺序

  • array 对象的方法 reverse() 将颠倒数组中元素的位置。
  • 它在原数组上实现这一操作,即重排指定的 array 元素,但并不创建新数组。
  • 如果对 array 有多个引用,那么通过所有引用都可以看到数组元素的新顺序。

array.sort(function) 对数组元素进行排序

  • 参数:function 可以控制数字排序
  • 返回值:对数组的引用。
  • 注意:数组在原数组上进行排序,不制作副本
  • 如果调用方法 sort() 时没有使用参数,将按字母顺序(按照字符编码的顺序)对数组中的元素进行排序

查询数组项

  • indexOf()
  • lastIndexOf()
  • 这两个属性可以参照字符串的定义和介绍

遍历数组

array.forEach(item[, thisObject])

  • 参数:
    • item:函数参数数组中每个元素
    • thisObject:对象作为该执行回调时使用
  • 返回值:返回创建数组

array.map(item[, thisObject])

  • 方法返回一个由原数组中的每个元素调用一个制定方法后的返回值组成的新数组

forEach 和 map 的区别

forEach 是遍历,而 map 是映射

截取数组值

array.slice(start, end) 返回数组的一部分

  • 参数:
    • start:数组片段开始处的数组下标。如果是负数,它声明从数组尾部开始算起的位置
    • end:数组片段结束处的后一个元素的数组下标
    • 如果没有指定 end,则默认包含从 start 开始到数组结束的所有元素。
  • 返回值:一个新数组,包含从 startend (不包括该元素)指定的 array 元素
  • 注意:不改变原数组!如果想删除数组中的一段元素,应该使用 array.splice

array.splice(start, length, value, ...) 插入、删除或替换数组中的元素

  • 参数:
    • start:开始插入或删除的数组元素的下标
    • length:从 start 开始,包括 start 所指的元素在内要删除的元素个数。如果没有指定 lengthsplice() 将删除从 start 开始到原数组结尾的所有元素。
    • value:要插入数组的零个或多个值,从 start 所指的下标处开始插入。
  • 返回值:如果从 array 中删除了元素,返回的是被删除元素的数组。

其他数组方法

array.concat(value, ...) 拼接数组

  • 参数:value,..., 要增加到 array 中的值,可以是任意多个
  • 返回值:一个新数组
  • 方法 concat() 将创建并返回一个新数组,这个数组是将所有参数添加到 array 中生成的。
  • 不修改原数组 array
  • 如果要进行 concat() 操作的参数是一个数组,那么添加的是数组中的元素,而不是数组。

array.join(separator) 将数组元素连接起来以构建一个字符串

  • 参数:separator,在返回的字符串中用于分割数组元素的字符或字符串,它是可选的。如果省略了这个参数,用逗号作为分隔符。
  • 返回值:一个字符串,通过把 array 的每个元素转换成字符串,然后把这些字符串连接起来,在两个元素之间插入 separator 字符串而生成。

希望对读完本文的你有帮助、有启发,如果有不足之处,欢迎批评指正交流!

欢迎关注微信公众号【前端功成屋】分享一些前端技术、面试题、面试技巧

辛苦整理良久,还望手动点赞鼓励~


'摘抄'不是单纯的“粘贴->复制”,而是眼到,手到,心到的一字一句敲打下来。

声明:所有转载的文章、图片仅用于作者本人收藏学习目的,被要求或认为适当时,将标注署名与来源。若不愿某一作品被转用,请及时通知本站,本站将予以及时删除。