数组Api
数组
1.API
JS预定义的一组函数和方法
reverse() 翻转数组元素
var arr= ['a','b','c','d'];
// 翻转数组元素
arr.reverse()
console.log(arr);
sort() 对数组元素进行排序,默认是按照Unicode编码排列
sort( function(a,b) {
return a-b //数字从小到大排列
//return b-a //数字从大到小排列
})
|
var arr= [23,9,78,6,45];
//排序
//默认是按照首个字符的Unicode编码排列
arr.sort(function(a,b) {
//a、b代表每次拿到的两个数字
// console.log(a,b);
//排序的条件,如果前边的大于后边
return a-b //数字从小到大排列
} )
console.log(arr);
toString() 将数组转为字符串
var arr=['a','b','c'];
//数组转为字符串
console.log(arr.toString()); //'a,b,c'
join() 将数组转为字符串,元素之间默认用逗号分割,可以指定分割的字符
var arr=['a','b','c'];
//可以指定元素之间的分割字符
console.log(arr.join());
concat(数组1,数组2,...) 拼接多个数组
var arr1 = ['大雄','静香','哆啦A梦'];
var arr2 = ['小夫','胖虎','出目杉'];
var arr3 = ['路飞','娜美','香吉士'];
//拼接成一个数组
//打印一个API的结果,这就是在看返回值
console.log(arr1.concat(arr2,arr3));
如果学习一个API:作用、参数、返回值
数组API 还需要查看原数组是否会发生变化
|
slice(start,end) 截取数组元素,start开始的下标,end结束的下标,不包含end本身;end为空截取到最后,如果下标是负数表示倒数;返回截取的元素,格式为数组。
练习:创建数组,包含a~h,每个字母是一个元素,分别截取出bc,f;把截取到的两部分拼接成一个数组。
var arr = ['a','b','c','d','e','f','g','h'];
var arr1 = arr.slice(1,3);
var arr2 = arr.slice(-3,-2);
console.log(arr1,arr2);
console.log(arr1.concat(arr2));
splice(start,count,v1,v2..) 删除数组元素,start开始的下标,count删除的数量,count为空删除到最后,下标为负数表示倒数,v1,v2表示删除后要补充的元素,返回的删除的元素,原数组会发生变化
练习:创建数组包含a~h,每个字母是一个元素,分别删除cd,替换f为m,在下标为1的位置插入z
var arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'];
arr.splice(2, 2);
arr.splice(-3, 1, 'm');
arr.splice(1, 0, 'z');
console.log(arr);
push() 在数组的末尾添加元素,返回数组的长度,原数组会发生变化
pop() 删除数组末尾的一个元素,返回删除的元素,原数组会发生变化
unshift() 在数组的开头添加元素,返回数组的长度,原数组会发生变化
shift() 删除数组开头的一个元素,返回删除的元素,原数组会发生变化
indexOf() 查找数组中是否含有某个元素,返回的是下标,如果找不到返回-1
2.清空数组
给数组长度设置为0
数组.length = 0
3.二维数组
数组中的元素还是数组,用于对数据进行二次分类
[ [元素1,元素2],[元素3,元素4]... ]
访问
数组[下标][下标]
字符串对象
包装对象:目的是为了让原始类型的数据像引用类型数据一样,具有属性和方法,JS下有三种包装对象,分别是字符串对象、数值对象、布尔对象
new String() 将字符串包装为对象
String() 将一个值强制转换为字符串
1.转义字符 —— \
改变字符本身的意义
\’ 将具有特殊意义单引号转义为普通的引号
\t 将字符t转义为制表符(Tab键,出现多个连续空格)
\n 将字符n转义为换行符
练习:打印输入以下字符串
C:\Users\Admin
console.log('C:\\Users\\Admin');
2.API
length 获取字符串长度
charAt() 获取下标对应的字符,也可以使用数组的方式 字符串[下标]
练习:遍历字符串javascript,统计出字符a出现的次数
indexOf() 查找字符串中是否含有某个字符串,返回的是第一个的下标
lastIndexOf() 查找字符串中是否含有某个字符串,返回的是最后一个下标,找不到返回-1
练习:声明变量保存用户输入的邮箱,如果邮箱中不含有@,打印'非法的邮箱'
var email = 'asda#qq.com';
if(email.indexOf('@') === -1) {
console.log('非法的邮箱');
}
toUpperCase() 英文字母转大写
toLowerCase() 英文字母转小写
字符串中所有的API都不会对原来的字符串产生影响
|
slice(start,end) 截取字符串,start开始的下标,end结束的下标,end为空截取到最后,下标为负数表示倒数
练习:声明变量保存一个邮箱,分别截取邮箱的用户名和密码,最后打印'用户名:xxx域名:xxx'
var email = '134324324@qq.com';
//查找@的下标
var index = email.indexOf('@');
//截取用户名
var user = email.slice(0,index);
//截取域名
var domain = email.slice(index+1);
console.log('用户名:'+ user + ' 域名:' + domain);
split() 将字符串转为数组,需要指定分割的符号
练习:声明变量保存字符串,翻转字符串
abcd -> dcba
var str = 'abcd';
console.log(str.split('').reverse().join(''));
Math对象
提供一组数学相关的API
是一个特殊的对象,不需要创建就可以直接调用API
random() 获取一个随机数 范围 >= 0 <1
var arr = ['路飞', '索隆', '艾斯', '乌索普', '乔巴', '娜美'];
var n = parseInt(Math.random() * arr.length)
console.log(arr[n]);
PI 获取圆周率
abs() 获取绝对值
ceil() 向上取整
floor() 向下取整
round() 四舍五入取整
pow(x,y) 计算x的y次方
max() 获取一组数字最大值,暂时不能使用数组
min() 获取一组数字最小值,暂时不能使用数组
Date对象
用于对日期时间的存储和计算
1.创建
new Date('2022/5/18 11:22:30')
new Date(2022,4,18,11,22,30) //月份的值是0~11 代表1~12月
new Date(1689372000000) //值代表时间戳,距离计算机元年的毫秒数
new Date() //存储的是当前操作系统的时间
2.获取日期时间
getFullYear() / getMonth() / getDate()
月份的值0~11,使用的时候需要加1
getHours() / getMinutes() /getSeconds() / getMilliseconds()
毫秒
getDay() 获取星期,范围0~6,代表 日~六
getTime() 获取时间戳
练习:创建Date 对象,保存当前操作系统时间,获取日期时间,打印以下格式
‘ 今天是xxxx年xx月xx日 星期x ’
星期的值不能使用0~6,使用 日~六
var now = new Date();
var year = now.getFullYear();
var month = now.getMonth()+1;
var date = now.getDate();
var day = now.getDay();
//创建一个数组,包含 日~六 下标0~6
var arr = ['日','一','二','三','四','五','六'];
//arr[day]
if(month < 10) {
month= '0' + month;
}
if(date < 10) {
date = '0'+ date;
}
console.log('今天是'+year+'年'+month+'月'+date+'日 星期'+arr[day]);
3.转为本地字符串格式
存在兼容性问题,只能用于调试部分
toLocaleString()
4.设置日期时间(修改)
setFullYear() / setMonth() / setDate()
setHours() / setMinutes() / setSeconds() / setMilliseconds()
毫秒
setTime() 设置时间戳,会产生一个具体的日期时间
练习:设置为2小时以后,设置为3天后
var d = new Date();
d.setDate(d.getDate()+3);
d.setHours(d.getHours()+2);
console.log(d.toLocaleString());
5.拷贝Date对象
new Date(Date 对象) 把要拷贝的 Date 对象作为参数传递
练习:创建一个 Date 对象,保存一个员工的入职时间(2022/9/12),假设合同期为3年,计算出到期时间;合同到期前一个月,发起续签,计算出续签时间。最后打印出三个时间的字符串格式
入职时间:
到期时间:
续签时间:
//创建Date对象,保存入职时间
var d1 = new Date('2022/9/12');
//拷贝一份入职时间,保存到期时间
var d2 = new Date(d1);
//3年后合同到期
d2.setFullYear(d2.getFullYear()+3);
//拷贝一份到期时间,保存续签时间
var d3 = new Date(d2);
//提前一个月
d3.setMonth(d3.getMonth()-1);
console.log('入职时间:'+ d1.toLocaleString());
console.log('到期时间:'+ d2.toLocaleString());
console.log('续签时间:'+ d3.toLocaleString());
Number对象
new Number() 将一个数字包装为对象
Number() 将一个值强制转换为数值
toFixed(n) 保留小数点后 n 位
Boolean对象
new Boolean() 将一个布尔值包装为对象
Boolean() 将一个值强制转换为布尔值
!!值 将一个值隐式转换为布尔值
错误处理
1.常见的错误
语法错误(SyntaxError):代码书写格式不符合语法规范,例如出现了中文符号,缺少半块括号...
引用错误(ReferenceError):使用了未声明的变量
类型错误(TypeError):调用的函数或者方法不是一个函数类型
自定义错误:程序员自己指定的错误 throw 错误内容
2.错误处理
即使出现了错误,也不会影响后续代码的执行
try {
尝试执行,可能有错误,出错后不影响后续代码执行
} catch(err) {
捕获try 中错误,将错误收集到err中
解决错误
}
|