JS算法题中常用的数组对象方法以及字符串对象方法
JS算法题中常用的数组对象方法以及字符串对象方法
前言
在刷算法题时发现很多题目都可以借助数组或字符串的对象方法巧妙的解决。所以决定将常用的一些对象方法进行总结,方便检索。
一、数组常用对象方法
1.会改变原数组的一些操作
//常用的添加或删除数组中元素的方法
array.pop() //用于删除数组的最后一个元素并返回删除的元素
array.shift() //用于把数组的第一个元素从其中删除,并返回第一个元素的值
array.push(item1, item2, ..., itemX) //可向数组的末尾添加一个或多个元素,并返回新的长度
array.unshift(item1,item2, ..., itemX) //可向数组的开头添加一个或更多元素,并返回新的长度
array.splice(index,deleteCount,item1,item2,...) //用于添加或删除数组中的元素
array.reverse() //用于颠倒数组中元素的顺序
array.sort(sortfunction) //用于对数组的元素进行排序 (数字排序,常写为箭头函数(a, b) => a - b 为升序, b - a为降序;也可以按字母排序!)
array.fill(value, start, end) //用于将一个固定值替换数组的元素(常用于创建已知长度的初始数组)
array.copyWithin(target, start, end) //用于从数组的指定位置拷贝元素到数组的另一个指定位置中(复制start到end左闭右开元素到索引为target的位置处)
2.不会改变原数组的一些操作
array1.concat(array2,array3,...,arrayX) //用于连接两个或多个数组
array.join(separator) //用于把数组中的所有元素转换一个字符串(常用!!)
array.slice(start, end) //可从已有的数组中返回选定的元素
array.valueOf() //返回 Array 对象的原始值
array.indexOf(item,start) //可返回数组中某个指定的元素位置,开始位置的索引为 0,如果在数组中没找到指定元素则返回 -1
array.lastIndexOf(item,start) //可返回一个指定的元素在数组中最后出现的位置,从该字符串的后面向前查找
//数组迭代的一些常见方法
array.forEach(function(currentValue, index, arr), thisValue) //用于调用数组的每个元素,并将元素传递给回调函数(forEach() 本身是不支持的 continue 与 break 语句的)
array.every(function(currentValue,index,arr), thisValue) //使用指定函数检测数组中的所有元素,如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测
array.some(function(currentValue,index,arr),thisValue) //用于检测数组中的元素是否满足指定条件,如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测
array.filter(function(currentValue,index,arr), thisValue) //创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素
array.map(function(currentValue,index,arr), thisValue) //返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值
//ACM模式中常常用.map(Number)来将数字字符串数组['1','2','3']变为数字数组[1,2,3]
array.reduce(function(total, currentValue, currentIndex, arr), initialValue) //接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值(求和常用!!)
二、字符串常用对象方法
string.split(separator,limit) //用于把一个字符串分割成字符串数组(!!!常用)
string.trim() //用于删除字符串的头尾空白符,空白符包括:空格、制表符 tab、换行符等其他空白符等,不适用于 null, undefined, Number 类型
字符串截取方法
string.slice(start,end) //可提取字符串的某个部分,并以新的字符串返回被提取的部分(左闭右开)
string.substr(start,length) //可在字符串中抽取从 开始 下标开始的指定数目的字符
string.substring(from, to) //用于提取字符串中介于两个指定下标之间的字符(左闭右开)
可以看到slice和substring非常相似,那么它们有什么区别呢?
- 当两个参数都大于零时,两个函数返回值一致;
- 第一个参数大于等于0,第二个为0时,slice返回值为空,但 substring返回值为0到第一个参数值结束的字符;
- 第一个参数大于等于0,第二个为负值时,slice返回值为第一个参数到 从尾部数第二个参数之间的字符,但是substring返回值为从0开始到stop结束的字符串;
- 只要第一个参数小于0 ,第二个参数不管是何值,slice返回值都为空,但是第二个参数是正值时substring返回值为0到第二个参数结束的字符。
string.charAt(index) //可返回指定位置的字符
string.charCodeAt(index) //可返回指定位置的字符的 Unicode 编码,返回值是 0 - 65535 之间的整数,表示给定索引处的 UTF-16 代码单元
string.concat(string1, string2, ..., stringX) //用于连接两个或多个字符串
string.toLowerCase() //用于把字符串转换为小写
string.toUpperCase() //用于把字符串转换为大写
判断字符串中是否含某字符串值或子字符串可以采用的方法
string.indexOf(searchvalue,start) //方法可返回某个指定的字符串值在字符串中首次出现的位置,若没有找到则返回-1 (start规定在字符串中开始检索的位置)
string.includes(searchvalue, start) //判断字符串是否包含指定的子字符串
string.lastIndexOf(searchvalue,start) //可返回一个指定的字符串值最后出现的位置,如果指定第二个参数 start,则在一个字符串中的指定位置从后向前搜索。
string.search(searchvalue) //用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,不匹配则返回-1
与正则表达式相关的
string.match(regexp) //返回值是匹配的相关信息,若不匹配则返回null
string.replace(searchvalue,newvalue) //用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串
string.search(searchvalue) //用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,不匹配则返回-1
string.split(separator,limit) //separator可为字符串或正则表达式
总结
本文仅仅简单介绍了一些算法题目中常用的数组对象方法以及字符串对象方法,语法和用法主要参考了菜鸟教程。在遇到具体问题时,可能会需要很多方法进行结合使用,具体使用哪个方法还要根据具体题目要求。