数组对象
1.添加或删除数组元素
arr=[];//创建数组
obj={};//创建对象
console.log(arr instanceof Array);//true(判断arr是否是Array数组)
console.log(obj instanceof Object);//true(判断obj是否是Object的对象)
push(参数1):
数组末尾添加一个或多个元素,会修改原数组 返回数组的新长度
arr=['red','yellow','green','blue','orange']
console.log(arr.push('black'));
console.log(arr);
unshift(参数2):
数组开头添加一个或多个元素,会修改原数组 返回数组的新长度
arr=['red','yellow','green','blue','orange']
console.log(arr.unshift('black'));
console.log(arr);
pop():
删除数组的最后一个元素,若是空数组则返回undefined,会修改原数组,返回删除的元素的值
arr=['red','yellow','green','blue','orange']
console.log(arr.pop());
console.log(arr);//orange
shift():
删除数组的第一个元素,若是空数组则返回undefined,会修改原数组,返回第一个元素的值
arr=['red','yellow','green','blue','orange']
console.log(arr.shift());
console.log(arr);
2.筛选对象
[案例]要求在包含工资的数组中,剔除工资达到2000以上的数据, 把小于2000的数重新放到新的数组里面
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();
对数组的元素进行排序,该方法会改变原数组,返回新数组
(1) 升序排列:
var arr=[13,4,77,1,7];
arr.sort(function(a,b){
return a-b
})
console.log(arr);
(2) 降序排列
var arr=[13,4,77,1,7];
arr.sort(function(a,b){
return b-a
})
console.log(arr);
3.数组索引
indexOf();
返回数组中可以找到给定值的第一个索引,如果不存在则返回-1
arr=['red','yellow','green','blue','orange','yellow'];
console.log(arr.indexOf('yellow'));
console.log(arr.indexOf('yellow',2));
lastindexOf();
返回指定元素在数组中的最后一个索引,如果不存在则返回-1
arr=['red','yellow','green','blue','orange','yellow'];
console.log(arr.lastIndexOf('yellow'));
案例需求
:要求在一组数据中,去除重复的元素
function unique(arr){
var newArr=[];
for(var i=0;i<arr.length;i++){
if(newArr.indexOf(arr[i])===-1){
newArr.push(arr[i]);
}
}
return newArr;
}
var demo=unique(['red','yellow','green','blue','orange','yellow']);
console.log(demo);
4。数组转换为字符串
toString();
把数组转换为字符串,逗号分隔每一项
var arr=['a','b','c'];
console.log(arr.toString());//a,b,c
join('分隔符');
将数组的所有元素连接到一个字符串中
console.log(arr.join());//a,b,c
console.log(arr.join(''));//abc
console.log(arr.join('-'));//a-b-c
fill();
用一个固定的值填充数组中指定下标范围内的全部元素
var arr1=[1,2,3,4];
console.log(arr1.fill(0,2,4));//[1,2,0,0]用0覆盖从2~4的元素
splice();
通过删除或替换现有元素或者原地添加新的元素来修改数组,返回被删除项目的新数组
var arr1=['red','yellow','blue','green'];
console.log(arr1.splice(1,2));//返回被删除的元素('yellow','blue')
arr1.splice(1,0,'black');
console.log(arr1);//删除2个元素后 再添加元素black
arr1.splice(1,0,'white','black');//删除2个元素后 再添加元素white,black
slice();
数组截取,参数为slice(begin, end),包含 `begin`,但不包含 `end`
返回被删除的元素,数组本身不会受到影响
var arr=['snow','rain','sun','cloud'];
console.log(arr.slice(2));//截取sun之后的元素
console.log(arr.slice(1,3));//截取1~3的元素不包括3
concat();
连接两个或多个数组,不影响原数组,返回一个新数组
var arr1=['a','b','c'];
var arr2=[1,2,3];
var arr3=arr1.concat(arr2);
console.log(arr3);
字符串对象
1.字符串对象的使用
用new String()来创建
var str = new String('apple');
console.log(str);
console.log(str.length);//获取字符串长度,输出结果为5
var obj =new String('hello');
console.log(typeof obj);//object
console.log(obj instanceof String);//true
var str='hello';
console.log(typeof str);//Stirng
console.log(str instanceof String);//false
2.根据数组返回位置
indexOf(searchValue)
获取searchValue在字符串中首次出现的位置
var str='helloworld';
str.indexOf('o');//4
lastindexOf(searchValue)
获取searchValue在字符串中最后出现的位置
var str='helloworld';
str.lastIndexOf('o');//5
实例:
var str='Hello World,Hello JavaScript';
var index = str.indexOf('o');
var num=0;
while (index!=-1){
console.log(index); //依次输出:4,7,17
index=str.indexOf('o',index+1);
num++
}
console.log('o出现的次数是:'+num);
3.根据位置返回字符
charAt(index)
获取index位置的字符,位置从0开始计算
var str='Apple';
console.log(str.charAt(3)); //l
charCode(index)
获取index位置的字符的ASCII码
var str='Apple';
console.log(str.charCodeAt(0)); //65(字符A的ASCII代码是65)
str[index]
获取指定位置处的字符(HTML5新增)
var str='Apple';
console.log(str[0]); //A
[案例]统计出现最多次数的字符和次数
var str='apple';
//第一步,统计每个字符的出现次数
var o={};
for(var i=0;i<str.length;i++){
var chars=str.charAt(i); //利用chars保存字符串中的每一个字符
if(o[chars]){ //利用对象的属性来方便查找元素
o[chars]++;
}else{
o[chars]=1;
}
}
console.log(o); //{A:1,p:2,1:1,e:1}
var max=0; //保存出现次数的最大值
var ch=''; //保存出现次数最多的字符
for (var k in o){
if(o[k]>max){
max=o[k];
ch=k;
}
}
console.log('出现最多的字符是:'+ch+',共出现了'+max+'次');
4.字符串操作方法
concat(str1,str2,str3...)
连接多个字符串
var str='HelloWorld';
str.concat('!'); //HelloWorld!
slice(start,[end])
截取从start位置到end位置之间的一个子字符串
var str='HelloWorld';
str.slice(1,3); //el
substring(start,[end])
截取从start位置到end位置之间的一个子字符串
var str='HelloWorld';
str.substring(5); //World
str.substring(5,7) //Wo
substr(start,[end])
截取从start位置到end位置之间的一个子字符串,基本和slice相同,但是不接受负值
var str='HelloWorld';
str.substr(5); //World
toLowerCase()
获取字符串的小写形式
var str='HelloWorld';
str.toLowerCase(); //helloworld
toUpperCase()
获取字符串的大写形式
var str='HelloWorld';
str.toUpperCase() //HELLOWORLD
split([separator[,limit])
使用separator分隔符将字符串分隔成数组,limit用于限制数量
var str='HelloWorld';
str.split('1'); //["He","","oWor","d"]
replace(str1,str2)
使用str2替换字符串中的str1,返回替换结果,只会替换第一个字符
var str='HelloWorld';
str.replace('World','!'); //"Hello!"
【案例】判断用户名是否合法
在开发用户注册和登录功能时,经常需要对用户名进行格式验证。
本案例要求用户名长度在3-10范围内,不允许出现敏感词admin的任何大小写形式
var name=prompt('请输入用户名:');
if(name.length<3 || name.length>10){
alert('用户名长度必须在3~10之间。');
}else if (name.toLowerCase().indexOf('admin')!==-1){
alert('用户名中不能包含敏感词:admin。');
}else{
alert('恭喜您,该用户名可以使用');
}