5.1 JS中的数组
如何创建数组
JS数组中各项目类型不一定相同
使用Array构造函数
语法:new Array()
()内可以写:数组内保存的项目数量/向Array构造函数中传递数组应包含的项
字面量表示法
由一堆包含数组项的[]表示,多个数组元素之间用逗号隔开
数组元素的读写
读取和设置值时,使用方括号[]并提供索引; 索引是从0开始的正整数。
取不出来(超长度或者没有赋值)=值为undefined
数组长度
语法:array.length
功能:获取数组array的长度
返回值:number
说明:
-
通过设置length可以从狐族末尾移除或者向数组添加新元素
给数组长度赋值3则丢弃第三个元素之后的元素
-
把一个值放在超出长度的位置上,数组长度自动重新计算,长度等于最后一个索引+1
给第九个元素位置赋值“cat”,输出时中间未赋值部分为undefined,并且长度重新计算为9
数组的栈方法
push()往尾巴上加元素
语法:arrayObject.push(插入的新元素1,插入的新元素2,...)
语法:把新元素按顺序添加到数组的尾巴上
返回值:指定值添加到数组后的新长度(number)
push新元素“cat”进入数组尾巴,长度+1
unshift()往开头加元素
语法:arrayObject.unshift(插入的新元素1,插入的新元素2,...)
语法:把新元素按顺序添加到数组的尾巴上
返回值:指定值添加到数组后的新长度(number)
unshift新元素“duck”进入数组开头,长度+1
pop()删除尾元素,shift()删除头元素
语法:arrayObject.pop()
功能:删除数组的最后一个元素
返回值:被删除的元素(原数组的最后一个元素)
语法:arrayObject.shift()
功能:删除数组的第一个元素
返回值:被删除的元素(原数组的最后一个元素)
删除第一个和最后一个元素
数组转换方法
join()把数组转换成字符串
语法:arrayObject.join(分隔符)
功能:用于把数组中所有元素放进一个字符串,字符串拼接等
返回值:字符串
- 字符串str1将数组元素变成一个字符串(默认使用“,”分隔)
- 字符串str2将数组元素变成一个字符串(设置使用“~”分隔)
- 字符串str3将数组元素变成一个字符串(设置' '内为空,就可以直接连在一起)
reverse()使数组反序
语法:stringObject.reverse()
功能:用于颠倒数组中元素的顺序
返回值:数组
这里不仅使用reverse颠倒了数组元素,并且连接join()函数将其作为一个数组连接输出
sort()给数组元素排序
语法:arrayObject.sort(sortby)
功能:用于对数组的元素进行排序
返回值:数组
说明:
- 即使数组中的每一项都是数值,sort()方法比较的也是字符串
var animals =['rabbit','woft','fox','snack','dog'];
console.log(animals.sort()); //"dog", "fox", "rabbit", "snack", "woft"
var num=[1,3,5,7,9,25,4,64,8];
console.log(num.sort()); //[1, 25, 3, 4, 5, 64, 7, 8, 9]
sort()函数内不添加任何值时以字符串大小排序(一个一个字符比较),比较数值时候也是按字符串比较形式,因此排出来25>3
- sort()方法可以接收一个比较函数作为参数
var num=[1,3,5,7,9,25,4,64,8];
num.sort(function(a,b){return a-b});//升序
console.log(num);
在sort()中添加一个函数进行比较
concat()连接数组
语法:arrayObject.concat(数组1,数组2...)
功能:连接两个或多个数组
返回值:数组
在concat()函数中可以新建一个数组跟原数组连接
slice()返回某段元素
语法:arrayObject.slice(start,end)
功能:从已有的数组中返回选定的元素
参数:
- start(必要)规定从哪里开始选取,如果是负数,从数组尾部开始算起
- end(选用)规定从何处结束选取,是数组片段结束处的数组下标
说明:
- 如果没指定end,切分从start到结束的所有元素
- 如slice()方法的参数中有一个负数,则数组长度加上该数确定位置
- start和end都指的是数组中的索引值
- 截取从start到end的前一个元素
返回值:数组
start为3,则截取从下标为3的“7”开始,到下标为6-1的元素(第6个元素)结束
另一种情况:
start为-3,意为length+(-3)=6,end为8,下标为7,所以输出“4,6”
splice()
删除
语法:arrayObject.splice(index,count)
功能:删除从index开始(下标)的零个或者多个元素
返回值:含有被删的元素的数组
说明:count是要删除的项目数量,如果设置0,则不删除项目,如果不设置,则删除从index开始到结束的所有值
插入
语法:arrayObject.splice(index,0,插入元素1,插入元素2...)
功能:在指定位置插入值
参数:
- index:要被插队的下标(插入index前面)
- 0:要删除的个数设为0
返回值:数组
设置插入点下标为2,意为将后续元素插入至下标2前面
替换
语法:arrayObject.splice(index,count,插入元素1,插入元素2...)
功能:在指定位置插入并删除=替换
参数:
- index:要被插队的下标(插入index前面)
- count:要删除的个数
返回值:从原始数组中删除的项
定位插入位置下标2,删除个数3个,插入个数3个(分别为4,4,4)
indexOf()正序查找元素
语法:arrayObject.indexOf(searchvalue,startIndex)
功能:从数组的开头(位置0)开始向后查找
参数:
- searchvalue:必要,要查找的项
- startIndex:可选,起点位置的索引
返回值:number,查找的项在数组中正序第一次出现位置,没找返回-1
没有设置查找位置时,从下标0开始全局查找,在下标3找到。
当查找起始位置从下标4开始时,7不在查找范围内,因此返回-1
lastIndexOf()倒序查找元素
功能:从数组的结尾(位置0)开始向后查找
参数:
- searchvalue:必要,要查找的项
- startIndex:可选,起点位置的索引
返回值:number,查找的项在数组中倒序第一次出现位置,没找返回-1
倒序查找7,在下标5的位置找到
lastIndexOf和indexOf只在部分浏览器中支持
查找时类型必须相同,不能用lastIndexOf("7")或indexOf("7")来查找数字“7”
5.2 JS中的字符串
## 字符串中查找
charAt()返回字符串中对应索引的字符
语法:stringObject.charAt(index)
功能:返回stringObject中 index 位置的字符,如果取不到就返回空
返回字符串中的索引为2的字符“a”
charCodeAt()返回字符串中对应索引字符的字符编码
语法:stringObject.charCodeAt(index)
功能:返回stringObject中index 位置字符的字符编码,如果取不到就返回空
查找字符串中的索引为2的字符的字符编码“97”
indexOf()正序查找字符串中指定字符
语法:stringObject.indexOf("想找的字符")
功能:从一个字符串中搜索给定的子字符串
返回值:number,查找的项在数组中正序第一次出现位置,没找返回-1
子串为“ar”,位于索引2和3,因此返回2
lastIndexOf()倒序查找字符串中指定字符
语法:stringObject.lastIndexOf("想找的字符")
功能:从一个字符串中搜索给定的子字符串
返回值:number,查找的项在数组中倒序第一次出现位置,没找返回-1
子串为“r”,位于索引3,因此返回3,不因正序倒序改变
截取字符串
slice()截取字符串
语法:stringObject(start,end),
功能:截取字符串
参数:
- start:必要,指定子字符串开始位置
- end:选用,表示子字符串的结束位置,不设置时默认截取至字符串末尾,所截取字符为其下标的前一个
举个例子:
开始于下标1,截取至下标4的前一位=下标3
- 如slice()方法的参数中有一个负数,则数组长度加上该数确定位置
substring()截取字符串
与slice()语法一致
区别:
- 当参数为负数,自动将参数转换为0
substr()截取字符串
语法:stringObject.substr(start,len)
功能:截取子字符串
参数:
- start:必要,指定子字符串开始位置
- len:选用,表示截取的字符数量,省略时截取至结尾
- 如substr()方法的参数中有一个负数,则数组长度加上该数确定位置
- 当len为负数时,返回空字符串
split()分割字符串为数组
语法:stringObject.split(拆分符)
功能:把一个字符串分割成字符串数组
返回值:数组
字符串中字符使用'-'分割开,所以可以使用“-”作为分隔符
replace()字符串中替换字符
语法:stringObject.replace(regexp/substr,replacement)
功能:在字符串中使用一些字符替换另一些字符,或替换一个与正则表达式匹配的字符
返回值:string
参数:
regexp:必要,规定子字符串要替换的模式的regexp对象
replacement:必要,一个字符串值
前被替换的字符,后换入的字符,缺点是只能替换一个字符
大小写转化
stringObject.toUpperCase()
功能:把字符串转化为大写
stringObject.toLowerCase()
功能:把字符串转化为小写