数组对象和字符串对象的各种方法及代码实操
数组方法
一.添加或删除数组元素
方法如下:
示例代码:
//方法名:push(参数1...) 在末尾添加一个或多个元素
var arr=['a','b','c','d']
console.log(arr.push('e')) //返回数组新长度
console.log(arr) //输出修改后的数组
console.log('=========================')
//方法名:unshift(参数1...) 在开头添加一个或多个元素
var arr1=['1','2','3','4','5']
console.log(arr1.unshift('-1','0')) //返回数组新长度
console.log(arr1) //输出修改后的数组
console.log('=========================')
//方法名:pop() 删除数组的最后一个元素
var arr2=['a','b','c','d']
console.log(arr2.pop()) //返回被删除的元素
console.log(arr2) //输出修改后的数组
console.log('=========================')
//方法名:shift() 删除数组的第一个元素
var arr3=['1','2','3','4','5']
console.log(arr3.shift()) //返回被删除的元素
console.log(arr3) //输出修改后的数组
输出结果:
注意:push()和unshift()方法的返回值是新数组的长度,而pop()和shift()方法返回的是移出的数组元素。
案例:筛选数组
要求:要求在包含工资的数组中,剔除工资达到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)
输出结果:
二.数组排序
排序方法如下:
示例代码:
var arr4=[1,2,3,4,5,6]
console.log(arr4.reverse()) //反转后输出结果
console.log(arr4)
// console.log('=========================')
/*sort有两种情况:
1.不传参数
2.传参数:参数是用来指定按某种顺序进行排列的函数
即a和b是两个将要比较的元素*/
var arr5=[1,5,35,92,28,73,7]
//1.不传参数的情况,按照字符编码的顺序进行排序
console.log(arr5.sort())
//2.传参数
arr5.sort(function(a,b){
return a-b; //升序
// return b-a; //降序
});
console.log(arr5);
输出结果:
注意: (1) reverse(和sort0方法的返回值是排序后的数组。
(2) sort 如果调用该方法时没有使用参数,按照字符编码的顺序进行排序。
三.数组索引
检索方法如下:
示例代码:
//方法:indexOf()
var arr=['a','b','c','d','a','f']
console.log(arr.indexOf('a')); //查找'a'返回下标,若有重复返回第一个'a'的下标
console.log(arr.indexOf('a',1)); //查找'a'从下标为1的字符开始
console.log(arr.indexOf('9')); //查找9,没有返回-1
// // console.log('=========================')
//方法:lastIndexOf()
var arr1=['a','b','c','d','a','f']
console.log(arr.lastIndexOf('a')); //返回最后一个'a'的下标
输出结果:
案例:数组去重
要求:要求在一组数据中,去除重复的元素。
示例代码:
function zycw(arr){
var newArr=[];
for(var i=0;i<arr.length;i++){
if(newArr.indexOf(arr[i])==-1){ //把数组arr中每一个元素都在数组newArr中检索如果没有就会返回-1
newArr.push(arr[i]); //然后就在数组newArr末尾添加这个元素
}
}
return newArr;
}
var res=zycw([1,2,3,4,1,3]) //定义一个res接收返回值
console.log(res);
输出结果:
四.数组转换为字符串
方法如下:
示例代码:
//1.toString()方法
var arr=['a','b','c','d']
console.log(arr.toString());
console.log('======================')
//2.join('分隔符')方法
//参数可选:指定一个字符串来分隔数组的每个元素
//如果需要,将分隔符转换为字符串()小括号里面填写的是指定的分隔符
//如果省略,数组元素用逗号(,)分隔
//如果 separator 是空字符串 (") ,则所有元素之间都没有任何字符
console.log(arr.join()); //输出结果:a,b,c,d
console.log(arr.join('')); //输出结果:abcd
console.log(arr.join('-')); //输出结果:a-b-c-d
输出结果:
五.其他方法
方法如下:
示例代码:
//1.fill() //填充
var arr1=[12,4,5,67,7]
console.log(arr1.fill(6,2)) //固定值为6,从下标为2开始
console.log('=========================')
//2.splice() //数组删除
var arr2=['张三','李四','王五','小明','小刚','小王']
// console.log(arr2.splice(1,2)) //从下标为1开始删除2个
// console.log(arr2)
console.log(arr2.splice(2,0,'小红')) //输出删除的元素(从下标为2开始删除0个,然后插入‘小红’(可添加多个))
console.log(arr2) //输出插入后的结果
console.log('=========================')
//3.slice() //数组截取
var arr3=['张三','李四','王五','小明','小刚','小王']
//console.log(arr3.slice(0,3)) //从下标为0开始截取3个
console.log(arr3.slice(1,5)) //从下标为1开始截取4个
console.log(arr3.slice(2,3)) //从下标为2开始截取1个
console.log('=========================')
//4.concat() //链接多个数组(可连接多个)
const z1=['a','b','c']
const z2=[1,2,3]
const a1=z1.concat(z2)
console.log(a1)
输出结果:
字符串方法
一.字符串对象的使用
字符串对象使用new String()来创建,在String构造函数中传入字符串,这样就会在返回的字符串对象中保存这个字符串。
代码语法如下:
var str=new String('apple'); //创建字符串对象
console.log(str) //输出结果:String{'apple'}
console.log(str.length) //获取字符串长度,输出结果:5
二.根据字符返回位置
字符串对象提供了用于检索元素的属性和方法,字符串对象的常用属性和方法如下:
示例代码:
var str='Hello World';
console.log(str.indexOf('o')); //获取'o'在字符串中首次出现的位置,返回结果:4
console.log(str.lastIndexOf('o')); //获取'o'在字符串中最后出现的位置,返回结果:7
注意:indexOf和lastlndexOf都区分大小写
三.根据位置返回字符
方法如下:
示例代码:
var str='Apple';
console.log(str.charAt(3)); //返回字符串中下标为3的字符,输出结果:1
console.log(str.charCodeAt(0)); //返回字符串中下标为0的字符的ASCII码值,输出结果:65(字符A的ASCII码为65)
console.log(str[0]); //返回字符串中下标为0的字符,输出结果:A
案例:统计字符串’Apple’中出现最多的字符和次数
示例代码:
var str='Apple';
var b={};
for (var i=0;i<str.length;i++){
var chars=str.charAt(i); //利用chars保存字符串中的每一个字符
if(b[chars]==true){ //判断是否取到了当前字符串
b[chars]++; //如果获取到了当前字符串,即对应的属性值+1
}
else{
b[chars]=1; //如果没有取到就说明只有一个
}
}
console.log(b);
var max=0; //定义一个max保存出现次数最大值
var ch=''; //定义一个ch保存出现次数最多的字符
for(var k in b){
if(b[k]>max){
max=b[k];
ch=k;
}
}
console.log('出现最多的字符是:'+ch+',共出现了:'+max+'次');
输出结果:
四.字符串操作方法
字符串对象提供了一些用于截取字符串、连接字符串、替换字符串的属性和方法。字符串对象的常用属性和方法如下:
示例代码:
var str='HelloWorld';
console.log(str.concat('真的','666','!')); //在字符串末尾拼接字符(可拼接多个),输出结果:HelloWorld真的666!
console.log(str.slice(4,7)); //截取从下标为4开始到下标为7范围内的内容,输出结果:oWo
console.log(str.substring(5)); //截取从下标为5开始到最后的所有内容,输出结果:World
console.log(str.substring(5,7)); //截取从下标为5开始到下标为7范围内的内容,输出结果:Wo
console.log(str.substr(5,3)); //截取从下标为5开始到3长度的子字符串,输出结果:Wor
console.log(str.toLocaleLowerCase()); //将字符串转换为小写,输出结果:HelloWorld
console.log(str.toLocaleUpperCase()); //将字符串转换为大写,输出结果:HELLOWORLD
console.log(str.split('l')); //将字符串从字符'l'处切割,输出结果:['He', '', 'oWor', 'd']
console.log(str.split('l',3)); //将字符串从字符'l'处切割,限制最多切割3次,输出结果:['He', '', 'oWor']
console.log(str.replace('World','Zzz')); //替换字符串,将字符串'World'替换为'Zzz',输出结果:HelloZzz
案例1:判断用户名是否合法
要求:用户名长度在3~10范围内,不能出现敏感词admin的任何大小写形式。
示例代码:
var name=prompt('请输入用户名:');
if(name.length<3||name.length>10){
alert('用户名长度必须在3~10之间。');
}
else if(name.toLocaleLowerCase().indexOf('admin')!=-1){
alert('用户名中不能包含敏感词:admin。');
}
else{
alert('恭喜您,该用户名可以使用。');
}
案例2:根据url = ‘http://www.martinhan.com/login?name=zs&age=18’;
要求最后的输出结果为{name:zs,age:18}
示例代码:
var url = 'http://www.martinhan.com/login?name=zs&age=18';
function getParams(url){
// 1. 首先把网址分为2部分用 ? 分割
// 2. 得到 ?+ 1 的索位置
var index=url.indexOf('?')+1;
// 3. 得到?后面的字符串
var params = url.substr(index);
console.log(params); // name=zs&age=18
// 4.把得到的这串字符,继续用 & 分隔开
var arr = params.split('&');
var o= {};
// 5.把数组里面的每一项,继续用 = 分隔
for (var i = 0; i < arr.length; i++) {
var newArr = arr[i].split('=');
o[newArr[0]] = newArr[1]; // 完成赋值操作
}
return o;
}
console.log(getParams(url));