字符串的理解:字符串或串(String)是由数字、字母、下划线组成的一串字符。
是一种数据类型也可以是对象
字符串方法总结
1.length :
定义和用法
返回字符串长度
let str ="zhangsan"
console.log(str.length);
///结果是8
indexOf() :
定义和用法
返回字符串中指定文本首次出现的索引,未出现,返回-1 ,可接收两个参数,第一个参数是查找的内容,第二个参数从指定位置开始 ,没有第二个参数默认从0开始
lastIndexOf ():
定义和用法
返回字符串中指定文本最后一次出现的索引,未出现,返回-1,可接收两个参数,第一个参数是查找的内容,第二个参数从开头到指定位置,没有第二个参数默认从0开始
var str = "hello world,hello man,how are you!";
console.log(str.indexOf('hello'))
///结果 0
console.log(str.lastIndexOf('hello',11))
///结果为 0 因为从后往前找第一个hello的位置是12,从11开始找的话这个hello肯定没有,只会找到最开始的那个hello,返回0。
slice():
提取字符串的某个部分并返回值
定义和用法
提取字符串的某个部分并返回值 :(一个新的字符串,从 start 开始(包括 start)到 end 结束(不包括 end)为止的所有字符。),
两个参数:start,end。
<script type="text/javascript">
var str="Hello happy world!"
document.write(str.slice(6,11))
</script>
输出:
happy
split()方法
定义和用法
用于把一个字符串分割成字符串数组。
string.split(separator,howmany)
separator 必需。字符串或正则表达式,从该参数指定的地方分割 string
howmany 可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度
var str="How are you doing today?";
var n=str.split('');
第一个参数是空串,第二个参数不传递默认是整个字符串,就会把每个字符全部分割并用逗号隔开
result:H,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,?
第二种情况
var str="How are you doing today?";
var n=str.split(' ',3);
第一个参数是空格,第二个参数是3,意味着把字符串按空格分割为长度为3的数组,剩余的截断舍弃
result:How,are,you
substr()方法
定义和用法
substr( start,length) 方法可在字符串中抽取从 start 下标开始的指定数目的字符。
start:表示从字符串的哪个下标开始抽取
length:抽取多少字符串长度 ,如果没有设置长度 默认全部
<script type="text/javascript">
var str="Hello world!"
document.write(str.substr(3,7))
</script>
结果为 lo worl
charAt()方法
定义和用法
charAt() 方法可返回指定位置的字符。
<script type="text/javascript">
var str="Hello world!"
document.write(str.charAt(1))
</script>
//打印结果e
charCodeAt()方法
定义和用法
charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。
方法 charCodeAt() 与 charAt() 方法执行的操作相似,只不过前者返回的是位于指定位置的字符的编码,而后者返回的是字符子串
<script type="text/javascript">
var str="Hello world!"
document.write(str.charCodeAt(1))
</script>
//打印结果 101
concat()方法
定义和用法
concat() 方法用于连接两个或多个数组。
该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
<script type="text/javascript">
var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
var arr2 = new Array(3)
arr2[0] = "James"
arr2[1] = "Adrew"
arr2[2] = "Martin"
document.write(arr.concat(arr2))
</script>
//输出:George,John,Thomas,James,Adrew,Martin
match()
定义和用法
match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式 (/\d+/g)的匹配。
该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。
<script type="text/javascript">
var str="333 plus 233equal 443"
document.write(str.match(/\d+/g))
</script>
///333,233,443
//对字符串进行检索
<script type="text/javascript">
var str="Hello world!"
document.write(str.match("world") + "<br />")
document.write(str.match("World") + "<br />")
document.write(str.match("worlld") + "<br />")
document.write(str.match("world!"))
</script>
结果为:
world
null
null
world!
replace()
定义和用法
replace() 方法用于在字符串中用一些字符替换另一些字符,返回一个新字符串,而不改变原始字符串。或替换一个与正则表达式匹配的子串。您可以将正则表达式作为第一个参数传递,除非您使用
正则表达式文字形式:/string/作为搜索字符串,并且指定了全局( /g )选项,否则replace()将仅替换第一个匹配项:
<script type="text/javascript">
var str="Welcome to Microsoft! "
str=str + "We are proud to announce that Microsoft has "
str=str + "one of the largest Web Developers sites in the world."
document.write(str.replace(/Microsoft/g, "W3School"))
</script>
///结果为:
Welcome to W3School! We are proud to announce that W3School
has one of the largest Web Developers sites in the world.
toLocaleLowerCase()
定义和用法
toLocaleLowerCase() 方法用于把字符串转换为小写。
<script type="text/javascript">
var str="Hello World!"
document.write(str.toLocaleLowerCase())
</script>
/// hello word!
toLocaleUpperCase()
定义和用法
toLocaleUpperCase() 方法用于把字符串转换为大写。
<script type="text/javascript">
var str="Hello World!"
document.write(str.toLocaleUpperCase())
</script>
//HELLO WORD!
toString()
定义和用法
toString() 方法可把一个 Number 对象转换为一个字符串,并返回结果。
<script type="text/javascript">
var number = new Number(1337);
document.write (number.toString())
</script>
///1337
trim()
定义和用法
trim() 方法用于删除字符串的头尾空白符,空白符包括:空格、制表符 tab、换行符等其他空白符等。
trim() 方法不会改变原始字符串。
trim() 方法不适用于 null, undefined, Number 类型。
var str = ' I love you ';
console.log(str.trim());
/// I love you
数组的方法总结
join ()
定义和用法
该方法可以将数组里的元素,通过指定的分隔符,以字符串的形式连接起来。
返回值:返回一个新的字符串, 原数组不受影响
//将数组用 - 符号连接起来
let arr = [1,2,3,4,5];
let str = arr.join('-');
console.log(str)
//str = 1-2-3-4-5;
split ()
定义和用法
该方法是用过指定的分隔符,将字符串分割成数组。
返回值:返回一个新的数组 ,原数组不受影响
let str = wqz-ttj;
let arr = str.split('-');
console.log(arr);
// arr=['wqz','ttj'];
数组的增删操作(直接改变原数组)
3. push
该方法可以在数组的最后面,添加一个或者多个元素
结构: arr.push(值)
返回值:返回的是添加元素后数组的长度.
4. pop
该方法可以在数组的最后面,删除一个元素
结构: arr.pop()
返回值:返回的是刚才删除的元素.
5. unshift
该方法可以在数组的最前面,添加一个或者几个元素
结构: arr.unshift(值)
返回值: 返回的是添加元素后数组的长度
6. shift
该方法可以在数组的最前面,删除一个元素
结构: arr.shift()
返回值: 返回的是刚才删除的元素.
let arr =[1,2,3,4,5]
console.log(arr.pop());//5
console.log(arr.push(6,7)); //6
console.log(arr.shift()); //1
console.log(arr.unshift(6));//6
数组的翻转和排序(改变数组)
reverse 翻转数组
结构:arr.reserse()
sort()
该方法可以对数组进行排序.
let arr = [1,3,5,2,4,23,122,34];
//没有参数:时按照首字符的先后排序
arr.sort()//arr=[1,122,2,23,3,34,4,5];
//有参数
arr.sort(function(a,b){
return a-b;//从小到大排序
return b-a;//从大到小排序
})
数组的拼接与截取(原数组不受影响)
concat
该方法可以把两个数组里的元素拼接成一个新的数组
返回值: 返回拼接后的新数组
该方法和push的区别: push是直接把后一个元素原封不动的添加到第一个数组的后面
let arr1 = [1,2,3];
let arr2 = [4,5,6];
let arr = arr1.concat(arr2);//arr = [1,2,3,4,5,6];
arr1.push(arr2);//arr1 = [1,2,3,[4,5,6]];
slice 截取 出来
该方法可以从数组中截取指定的字段,返回出来
返回值:返回截取出来的字段,放到新的数组中,不改变原数组
结构1:arr.slice(start,end) ;从start下标开始截取,一直到end结束,不包括end
let arr = [0,1,2,3,4,5,6,7];
let newArr = arr.slice(0,3)//newArr = [0,1,2];
结构2:arr.slice(start) ;从start下标开始截取,一直到最后
let arr = [0,1,2,3,4,5,6,7];
let newArr = arr.slice(2)//newArr = [2,3,4,5,6,7];
结构3:arr.slice( ) ;全部截取
let arr = [0,1,2,3,4,5,6,7];
let newArr = arr.slice()//newArr = [0,1,2,3,4,5,6,7];
删除或增加元素(任意在任何位置,直接改变原数组,没有返回值
splice()
结构1: arr.splice(start,deletedCount) 纯删除
从start下标开始,删除几个
结构2: arr.splice(start,deletedCount,item) 替换
从start下标开始,删除几个,并在该位置添加item
结构3: arr.splice(start,0,item) 纯添加
从start下标开始,删除0个,并在该位置添加item,start开始全部往后移动
let arr = [1,2,6,7,8];
arr.splice(2,0,3,4,5);//arr = [1,2,3,4,5,6,7,8];
查找元素在数组中出现的位置
indexOf()
该方法用来查找元素在数组中第一次出现的位置
结构: arr.indexOf(元素)
特殊用法:
(1) arr.indexOf (ele,fromIndex),从fromIndex这个下标开始,元素第一次出现的位置
用来判断元素是否存在于数组中!
if (arr.indexOf(ele) === -1){//说明元素不存在!!
console.log('元素不存在!)
} else {
console.log(' 元素存在! ')
}
遍历数组方法
forEach( )
该方法等同于for循环,没有返回值
用法:
arr.forEach(function(item,index,arr){
//里面的function是一个回调函数,
//item: 数组中的每一项;
//index:item 对应的下标索引值
//arr: 就是调用该方法的数组本身
})
map( )
映射,该方法使用和forEach大致相同,但是该方法有返回值,返回一个新数组,新数组的长度和原数组长度相等
//里面的function是一个回调函数,
//item: 数组中的每一项;
//index:item 对应的下标索引值
//arr: 就是调用该方法的数组本身
用法:
let arr = [1,32,54,6,543];
let res = arr.map(function(item,index,arr){
return item*2;
})
filter( )
filter方法: 有返回值, 过滤出符合条件的元素
let arr = [1, 3, 5, 2, 4, 6];
let res3 = arr.filter(function(item, index) {
return item % 2 === 0;
});
console.log(res3);
过滤出布尔类型为true的项
let arr2 = [0, "", false, 1, 3, 4];
let res4 = arr2.filter(function(item, index) {
return item;
});
console.log(res4);
findIndex
找到符合条件的项的下标,并且返回第一个
var res8 = arr4.findIndex(function(item) {
return item.done;
});
console.log(res8);