一.Math对象
1.Math对象的使用
Math对象用来对数字进行与数字相关的计算,该对象不是构造函数,不需要实例化对象,可以直接使用其静态属性和静态方法。
** Math对象的常用属性和方法**
成员 | 作用 |
---|---|
PI | 获取圆周率,结果为3.141592653589793 |
abs(x) | 获取x的绝对值,可传入普通数值或是用字符串表示的数值 |
max([value1[value2,...]]) | 获取所有参数中的最大值 |
min([value1[value2,...]]) | 获取所有参数中的最小值 |
pow(base,exponent) | 获取基数(base)的指数(exponent)次幂 |
sqrt(x) | 获取x的平方根 |
ceil(x) | 获取大于或等于x的最小整数,即向上取整 |
floor(x) | 获取小于或等于x的最小整数,即向下取整 |
round(x) | 获取x的四舍五入后的整数值 |
random(x) | 获取大于或等于0.0且小于1.0的随机数 |
具体代码
// 获取圆周率 Math.PI; // 获取绝对值 Math.abs(-1); //1 Math.abs('-11');// 11 // 获取最大值 Math.max(1, 2, 3, 4, 5);//5 // 获取最小值 Math.min(1, 2, 3, 4, 5);//5 // 获取基数(base)的指数(exponent)次幂 Math.pow(2, 4);// 获取2的4次幂 //16 // 获取x的平方根 Math.sqrt(9); // 3 // 向上取整(舍弃小数部分,整数部分加1) Math.ceil(1.9); //2 // 向下取整(舍弃小数部分,整数部分不变) Math.ceil(1.9);//1 // 四舍五入 Math.round(1.5);//2 // 四舍五入 Math.round(-1.5);//-1(获取比较大的值) // 四舍五入 Math.round(-1.6);//-2
2.生成指定范围的随机数
Math.random()用来获取随机数,每次调用该方法返回的结果都不同。由于Math.random()返回的这个随机数不太常用,于是我们借助一些数学公式来转换成任意范围内的随机数:
表示生成大于或等于min且小于max的随机值
示例代码如下
Math.random()*(3-1)+1; //1<= 返回结果 <3 Math.random()*(20-10)+10; //10<= 返回结果 <20 Math.random()*(99-88)+88; //88<= 返回结果 <99
其代码返回结果是浮点数,当需要获取整数结果时,可以搭配Math.floor()来实现
示例代码
<script> function getRandom(min,max){ return Math.floor(Math.random()*(max-min+1)+min); } console.log(getRandom(1,3)); //最小值;1 最大值;3 </script>
上述代码中,用来生成min到max之间的随机函数,包含min和max。还可以用Math.floor(Math.random()*(max+1))表示生成0到max之间的随机函数,也可以表示生成1到max之间的随机整数。
利用随机数,可以实现在数组中随机获取一个元素,示例代码如下
<script> var arr =['apple','banana','orange','pear']; //调用前面编写的getRandom()函数获取随机数 console.log(arr[getRandom(0,arr.length-1)]); </script>
3.【案例】数字游戏
1). 使程序随机生成一个1~10之间的数字,并让用户输入一个数字
2). 判断这两个数的大小,如果用户输入的数字大于随机数,那么提示“你猜大了”
3). 如果用户输入的数字小于随机数,则提示“你猜小了”
4). 如果两个数字相等,就提示“恭喜你,猜对了”,结束程序。
示例代码如下:
<script> function getRandom(min, max) { return Math.floor(Math.random() * (max - min + 1) + min); } var random = getRandom(1, 10); while (true) {//死循环,利用第13行的 break 来跳出循环 var num = prompt('猜数字,范围在1~10之间。'); if (num > random) { alert('你猜大了'); } else if (num < random) { alert('你猜小了') } else { alert('恭喜你,猜对了'); break; } } </script>
在上面的代码中,第1-3行代码定义了getRandom()函数,利用Math.random()方法求随机数。第4行代码设置了随机数大小为1-10之间的数。第6-15行代码在while循环语句中利用if...else if 多分支语句来判断大于,小于,等于。
二.日期对象
1.日期对象的使用
JavaScript中的日期对象需要使用new Date()实例化对象才能使用,Date()是具体对象的构造函数。
<script> //方式1:没有参数,使用当前系统的当前时间作为对象保存的时间 var datel = new Date(); //输出结果: Sun Apr 16 2023 02:06:24 GMT+0800 (中国标准时间) console.log(datel); //方式2:传入年、月、日、时、分、秒(月的范围是0~11,即真实月份﹣1) var date2 = new Date(2019, 10, 16, 10, 57, 56); //输出结果: Sat Nov 16201910:57:56 GMT +0800(中国标准时间) console.log(date2); //方式3:用字符串表示日期和时间 var date3 = new Date('2019-10-16 10:57:56'); //输出结果:wed oct 16 2019 10:57:56 GMT+0800(中国标准时间) console.log(date3); </script>
Date对象的常用get方法
方法 | 作用 |
---|---|
getFullYear() | 获取表示年份的4位数字,如2020 |
getMonth() | 获取月份,范围0~11(0表示一月,1表示二月,依次类推) |
getDate() | 获取月份中的某一天,范围1~31 |
getDay() | 获取星期,范围0~6(0表示星期日,1表示星期一,依次类推) |
getHours() | 获取小时数,返回0~23 |
getMinutes() | 获取分钟数,范围0~59 |
getSeconds() | 获取秒数,范围0~59 |
getMillisconds() | 获取毫秒数,范围0~999 |
getTime() | 获取从1970-01-01 00:00:00距离Date对象所代表时间的毫秒数 |
Date对象set方法
方法 | 作用 |
---|---|
setFullYear(value) | 设置年份 |
setMonth(value) | 设置月份 |
setDate(value) | 设置月份中的某一天 |
setHours(value) | 设置小时数 |
setMinutes(value) | 设置分钟数 |
setSeconds(value) | 设置秒数 |
setMilliseconds(value) | 设置毫秒数 |
setTime(value) | 通过从1970-01-01 00:00:00计时的毫秒数来设置时间 |
下面用具体代码演示Date对象的使用,在控制台中输入当前日期
<script> var date = new Date(); //基于当前日期时间创建Date对象 var year = date.getFullYear();//获取年 var month = date.getMonth();//获取月 var day = date.getDate(); //获取日 //通过数组将星期值转换为字符串 var week = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']; //输出date对象保存的时间,示例:今天是2019年9月16日 星期三 console.log('今天是' + year + '年' + month + '月' + day + '日' + week[date.getDay()]); </script>
将日期对象中的时间转换成指定格式,示例代码
<script> //返回当前时间,格式为:时:分:秒,用两位数字表示 function getTime() { var time = new Date(); var h = time.getHours(); h = h < 10 ? '0' + h : h; var m = time.getMinutes(); m = m < 10 ? '0' + m : m; var s = time.getSeconds(); s = s < 10 ? '0' + s : s; return h + ':' + m + ':' + s; } console.log(getTime()); //输出结果示例:10:07:56 </script>
2.【案例】统计代码执行时间
获取时间戳的常见代码如下:
<script> // 方式1:通过日期对象的valueof()或getTime()方法 var date1 = new Date(); // valueOf用于获取对象的原始值 console.log(date1.valueOf()); // 示例结果:1571196996188 console.log(date1.getTime()); // 示例结果:1571196996188 // 方式2:使用“+”运算符转换为数值型 var date2 = + new Date(); console.log(date2); // 示例结果:1571196996190 // 方式3:使用HTML5新增的Date.now()方法 console.log(Date.now()); // 示例结果:1571196996190 </script>
在学会如何或取到时间戳后,我们来完成案例的代码,示例代码:
<script> var timestamp1 = +new Date(); for (var i = 1, str = ''; i <= 90000; i++) { str += i; } var timestamp2 = +new Date(); //示例结果:代码执行时间:37毫秒 console.log('代码执行时间:' + (timestamp2 - timestamp1) + '毫秒'); </script>
3.【案例】倒计时
-
)案例需求:在一些电商网站的活动页上会经常出现折扣商品的倒计时标记,显示离活动结束还剩X天X小时X分X秒。
2). 倒计时的核心算法是输入的时间减去现在的时间,得出的剩余时间就是要显示的倒计时时间,这需要把时间都转化成时间戳(毫秒数)来进行计算,把得到的毫秒数转换为天数、小时、分数、秒数。
计算公式:
d = parseInt(总秒数/ 60/60 /24); // 计算天数
h = parseInt(总秒数/ 60/60 %24) // 计算小时
m = parseInt(总秒数 /60 %60 ); // 计算分数
s = parseInt(总秒数%60); // 计算当前秒数
示例代码
<script> function countDown(time) { var nowTime = +new Date(); var inputTime = +new Date(time); var times = (inputTime - nowTime) / 1000; var d = parseInt(times / 60 / 60 / 24); d = d < 10 ? '0' + d : d; var h = parseInt(times / 60 / 60 % 24); h = h < 10 ? '0' + h : h; var m = parseInt(times / 60 % 60); m = m < 10 ? '0' + m : m; var s = parseInt(times % 60); s = s < 10 ? '0' + s : s; return d + '天' + h + '时' + m + '分' + s + '秒'; } //示例结果:200天00时03分56秒 console.log(countDown('2023-11-01 00:00:00')); </script>