一、 数组对象
1.数组类型检测
在开发中,有时候需要检测变量的类型是否为数组。数组检测有两种常用的方式,分别是instanceof运算符和使用Aarray.isArray()方法
以下是示例代码
var arr=[];
var obj={}
//第一种方式
console.log(arr instanceof Array)//输出结果:true
console.log(obj instanceof Array)//输出结果:false
//第二种方式
console.log(Array.isArray(arr))//输出结果:true
console.log(Array.isArray(obj))//输出结果:false
注意:如果检测结果为TRUE,表示给定的变量是一个数组,如果检测结果是FALSE,或在数组的末尾或开头移出数组元素。
2.添加或删除数组元素
注意:push()和unshift()方法的返回值是新数组的长度,而pop()和shift()方法返回的是移出的数组元素
代码演示:
var arr=['Rose','Lily']
console.log('原数组:'+arr)
var last=arr.pop()
console.log('在末尾移出元素:'+last+'-移出后数组:'+arr)
var len=arr.push('Tulip','Jasmine')
console.log('在末尾额添加元素长度变为;'+len+'-添加后数组:'+arr)
var first=arr.shift()
console.log('在开头移出元素:'+frist+'-移出后数组:'+arr)
len=arr.unshift('Balsam','sunflower')
console.log('在开头添加元素后长度变为:'+len+'-添加后数组:'+arr)
接下来我们通过一个案例来演示数组对象的使用
var arr=[1500,1200,2000,2100,1800]
var newArr=[]
for (var i =0;i<arr.length;i++){
if (arr[i]<2000){
newArr.push(arr[i])
}
}
console.log(newArr)
3.数组排序
方法名 | 功能描述 |
---|---|
reverse() | 颠倒数组中元素的位置,该方法会改变原数组,返回新数组 |
sort() | 对数组的元素进行排序,该方法会改变原数组,返回新数组 |
注意:reverse()和sort()方法的返回值是新数组的长度
//反转数组
var arr=['red','green','blue']
arr.reverse()
console.log(arr)
//数组排序
var arr1=[13,4,77,1,7]
arr1.sort(function(a,b){
return b-a
})
console.log(arr1)
4.数组索引
在开发中,若要查找指定的元素在数组中的位置,则可以利用Array对象提供的检索方法
方法名 | 功能描述 |
---|---|
indexOf() | 返回在数组中可以找到给定值的第一个索引,如果不存在,则返回-1 |
lastIndexOf() | 返回指定元素在数组中的最后一个索引。如果不存在则返回-1 |
ps:上述方法中,默认都是从指定数组索引的位置开始检索,并且检索方式与运算符“===”相同,即只有全等时才会返回比较成功的结果
lastIndexOf()方法用于在数组从指定下标位置检索到最后一个给定值的下标。与indexOf()检索方式不同的是,lastIndexOf()方法默认逆向检索,即从数组的末尾向数组的开头检索
5.数组转换为字符串
方法名称 | 功能描述 |
---|---|
toSring | 把数组转换为字符串,逗号分隔一项 |
join(‘分隔符’) | 将数组的所有元素连接到一个字符串中 |
//使用toString
var arr =['a','b','c']
console.log(arr.toString())
//使用join()
console.log(arr.join())
console.log(arr.join(''))
console.log(arr.join('_'))
从上述代码可知,join()和toString()方法可将多维数组转为字符串,默认情况下使用逗号连接。不同的是,join()方法可以指定连接数组元素的符号。另外,当前数组元素为undefined、null或空数组时,对应的元素会被转换为空字符串
6.其他方法
方法名 | 功能描述 |
---|---|
fill() | 用一个固定值填充数组中指定下标范围内的全部元素 |
splice | 数组删除,参数为splice(第几个开始,要删除个数),返回被删除项目的新数组 |
slice | 数组截取,参数为slice(begin,end),返回被截取项目的新数组 |
concat() | 连接两个或多个数组,不影响原数组,返回一个新数组 |
var url ='http://www.martinhan.com/login?name=zs&age=18'
function getnew(url){
var index=url.indexof('?')+1
var a=url.substr(index)
console.log(a)
var arr=a.split('&')
var o={}
for(var i=0;i<arr.length;i++){
var newarr=arr[i].split('=')
o[newarr[0]]=newarr[1]
}
return o
}
consoloe.log(getnew(url))
二、字符串对象
1.字符串对象的使用
字符串对象使用new String()来创建,在String构造函数在中传入字符串,就会在返回的字符串对象中保存这个字符串
var str=new String('apple')
console.log(str)
console.log(str.length)
注意:虽然JavaScript基本包装类型的机制可以使普通变量也能像对象一样访问属性和方法,但它们并不属于对象类型
2.根据字符返回位置
方法 | 作用 |
---|---|
indexOf(search Value) | 获取search Value在字符串首次出现的位置 |
lastindexOf(search value) | 获取search value在字符串中最后出现的位置 |
代码演示
var str='HelloWorld'
str.indexOf('0')
str.lastindexOf('b')
通过案例进行演示,在一组字符串中找到所有指定元素出现的位置以及次数
var str='Hello World,Hello javascript'
var index=str.indexOf('o')
var num=0
while(index !=-1){
console.log(index)
index=str.indexOf('o',index+1)
num++
}
console.log('o出现的次数是:'+num)
3.根据位置返回字符
成员 | 作用 |
---|---|
charAt(index) | 获取index位置的字符位置从0开始计算 |
charCodeAt(index) | 获取index位置的字符ASCII码 |
str[index] | 获取指定位置处的字符(HTML5新增) |
4.字符串操作方法
成员 | 作用 |
---|---|
concat(str1,str3,str3) | 连接多个字符串 |
slice(start,[end]) | 截取从start位置到end位置之间的一个子字符串 |
substring(start[,end]) | 截取从start位置到end位置之间的一个子字符串,基本和slice相同,但是不接收负值 |
substr(start[,length]) | 截取从start位置到length长度的子字符串 |
toLowercase() | 获取字符串的小写形式 |
toUpperCase() | 获取字符串的大写形式 |
split([separator[.limit]) | 使用separator分隔符将字符串分隔成数组,limit用于限制数量 |
replace(str1,str2) | 使用str2替换字符串中的str1,返回替换结果,只会替换第一个字符 |
【案例】判断用户名是否合法
var name=prompt('请输入用户名')
if(name.length<3||name.length>10){
alert('用户名长度必须在3~10之间')}
else if(name.toLowerCase().indexOf('admin')!==1){
alert('用户名中不能包含敏感词:admin')}
else{
alert('恭喜您,该用户名可以使用')}