工作中常用的字符串和数组方法
1.获取字符串指定位置的值
charAt()和charCodeAt()都可以通过索引来获取指定位置的值。
tip:你可以使用下标获取某个位置的字符,但如果是下标越界就会返回undefined,charAt返回空字符串
- charAt()方法获取到的是指定位置的字符
- charCodeAt()是获取指定位置字符的Unicode值
2.检索字符串是否包含特定序列
- indexof()查找某个字符串,有则返回第一个匹配到的位置,没有返回-1,第二个参数是开始检索的位置
- lastIndexof()查找某个字符串,有则返回最后个匹配到的位置,没有返回-1,第二个参数是从结尾开始检索的位置
- includes()判断是否包含某个字符串,有则返回true,没有返回false,第二个参数是开始检索的位置
- startsWith()/endsWith() 检测字符串是否以指定的字符串开始/结束
3.字符串截取
- slice()推荐使用,可以用负数下标
'abcd'.slice(1,2) // b
'abcd'.slice(1) //bcd
'abcd'.slice(-4,-1) //abc
'abcd'.slice(-5,-1)//abc
- substring(start,length) 次推荐, 用于在字符串中抽取从开始下标开始的指定数目的字符
let str = "Hello, World!";
let substr = str.substring(0, 5); // 截取从索引 0 到索引 5 之间的字符 左闭右开
console.log(substr); // "Hello"
// 传入的参数如果有负数会被视为 0
let substr2 = str.substring(-5, 10);
console.log(substr2); // "Hello, Wo"(负数会被当作 0 处理)
- substr()不推荐
4.字符串模式匹配
-
replaceAll()与
replace()
的全局标志g
功能相似 -
replace() 该方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串
let str = "abcdef";
str.replace("c", "z") // 输出结果:abzdef
let str="Mr Blue has a blue house and a blue car";
str.replace(/blue/gi, "red"); // 输出结果:'Mr red has a red house and a red car'
// 全局匹配g i不区分大小写
- match()检索字符串中与正则表达式匹配的内容,并返回一个数组。如果没有匹配项,则返回
null
。
let str = "The quick brown fox jumps over the lazy dog";
let result = str.match(/the/gi); // 忽略大小写的全局匹配
let result = str.match(/the/i); // 忽略大小写的全局匹配
console.log(result); // ["The", "the"]
console.log(result); //[
"the"
]
matchAll()
方法(ES2020 引入)用于返回字符串中所有与正则表达式匹配的内容。它会返回一个迭代器(Iterator),每个元素是一个匹配结果的数组
let str = "cat and cat and cat";
let result = str.matchAll(/cat/g);
for (const match of result) {
console.log(match);
}
// Output:
// ["cat", index: 0, input: "cat and cat and cat", groups: undefined]
// ["cat", index: 8, input: "cat and cat and cat", groups: undefined]
// ["cat", index: 17, input: "cat and cat and cat", groups: undefined]
- exec()用于执行一个匹配,并返回匹配到的内容。如果没有匹配,返回
null
。与match()
不同的是,exec()
可以返回更多的详细信息(如捕获的组)
let regex = /(\d+)-(\d+)-(\d+)/; // 匹配日期格式
let str = "2024-11-14";
let result = regex.exec(str);
console.log(result); // ["2024-11-14", "2024", "11", "14"]
test()
方法用于判断字符串是否符合正则表达式模式。如果匹配,返回true
,否则返回false
。
let regex = /fox/;
let result = regex.test("The quick brown fox");
console.log(result); // true
- search()
方法用于查找字符串中第一次出现匹配正则表达式的位置。如果匹配成功,返回匹配的第一个位置,否则返回
-1
let str = "The quick brown fox";
let index = str.search(/brown/);
console.log(index); // 10
-
padStart用于头部补全。该方法有两个参数,其中第一个参数是一个数字,表示字符串补齐之后的长度;第二个参数是用来补全的字符串。
如果原字符串的长度,等于或大于指定的最小长度,则返回原字符串
'x'.padStart(1, 'ab') // 'x' 'x'.padStart(33, 'ab') // 'ababababababababababababababababx' //如果省略第二个参数,默认使用空格补全长度: 'x'.padStart(4) // ' x'
判断一个数组是不是包含某个值常用方法
1.find/findIndex
const list = [
{id:1,name:'JK'},
{id:2,name:'MM'},
{id:3,name:'SR'}
]
list.find((item)=>item.name==="SB") // 返回这个对象 没匹配就返回list.findIndex((item)=>item.name==="SB") // 返回这个对象的下标 没匹配就-1
2.includes
list.some((item)=>item.name==="SB") // 返回布尔值
3.reduce
list.reduce((pre,curr)=>item.name==="SB",false) // 返回布尔值
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类