JS从零开始(13)

99 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第13天,点击查看活动详情

字符串的保存

在js中,我们声明一个变量并且赋予它字符串的值,那么这个字符串在底层其实是以字符数组的形式来保存的,例如:

var str = 'hello world';
console.log(str.length); // 11
console.log(str[2]); // l
console.log(str.indexOf('w'));//6

很明显我们能看出通过js的隐式转换可以得到str的长度(包括空格),也可以根据数组下标得到某个字符,还可以找到某个字符所在字符串的位置,就很像数组中的操作。

字符串的查找

方法解释说明
indexOf()从前向后查找字符串中某个字符的位置
lastIndexOf() 从后向前查找字符串中某个字符的位置
search() 搜索字符串中指定内容的位置
includes() 字符串中是否含有指定的内容
startsWith()字符串中是否以指定的内容开头
endWith() 字符串中是否以指定的内容结束

解释

indexOf()

var str = 'abcde';
console.log(str.indexOf('c'));//2
console.log(str.indexOf('a'));//0
console.log(str.indexOf('f'));//-1

作用:若是字符串以指定的内容开头,则索引值为0;若是其中没有指定的内容,则返回为-1

lastIndexOf()

var str = 'abcde';
console.log(str.lastIndexOf('c'));//2
console.log(str.lastIndexOf('a'));//0
console.log(str.lastIndexOf('f'));//-1

这里大家可能会有疑问,为什么输入a返回值却为0?那大家不妨看看这几句代码

var str1 = 'abcdea';
console.log(str.lastIndexOf('a'));//5
var str2 = 'abcdeaa';
console.log(str.lastIndexOf('a'));//6

很奇怪,为什么返回值不是0?而是5和6?其实大家可以理解为indexOf()lastIndexOf()用法其实是一样的,两者的区别就在于,indexOf()返回的是指定内容最开始出现的下标,而lastIndexOf()返回的是指定内容最后出现的下标。特别要注意的是,使用lastIndexOf()的时候,下标不能从尾部到头部从0开始算(5、4、3、2、1、0),而是从头开始从0开始算(0、1、2、3、4、5).这样就不难理解了,lastIndexOf('a')从尾部开始查找,查找指定内容a最后出现的下标,那很明显是(0、1、2、3、4、5、6)最后的6了,大家明白了吗?😁😁