一, Math 对象
1. 获取π
Math.PI
2. 最大值 / 最小值
- Math.max()
- Math.min()
3. 取整
Math.floor(): 地板函数, 向下取整 1.9999 => 1
Math.round(): 四舍五入 1.5 => 2
Math.ceil(): 天花板函数, 向上取整 1.000001 => 2
4. 生成一个随机数
Math.random(): 生成 [0,1) 范围的随机数
和取整搭配使用, 生成一个 n~m 的随机数
Math.floor(Math.random()*m-n+1)+n
5. 绝对值
Math.abs()
6. 次幂和平方
- Math.pow(num, power);// 求 num 的 power 次方
- Math.sqrt(num);// 对 num 开平方
7. 案例时间
猜数字小游戏
- function getNum() {
- // 获取 0 - 100 的随机整数
- var num = Math.floor(Math.random() * 101);
- var a = prompt('请输入你猜的数字 0~100');
- // 次数
- var i = 5;
- while (true) {
- if (i> 1) {
- if (a === num) {
- // alert('恭喜您猜对啦, 只用了' + 5 - i + '次, 正确数字是' + num + '');
- alert(` 恭喜您猜对啦, 只用了 ${5 - i}次, 正确数字是 ${num}`);
- break;
- } else if (a> num) {
- // 猜错了就减一次机会
- a = prompt(`${a}太大了, 您还有 ${--i}次机会 `);
- } else if (a <num) {
- a = prompt(`${a}太小了, 您还有 ${--i}次机会 `);
- }
- } else {
- alert('次数超过, 游戏失败');
- break;
- }
- }
- }
- getNum();
- </script>
随机颜色
- <script>
- // 获取一个随机 rgba 颜色和十六进制
- // 取值 0-255
- function getColor() {
- var r = Math.floor(Math.random() * 256);
- var g = Math.floor(Math.random() * 256);
- var b = Math.floor(Math.random() * 256);
- var a = Math.floor(Math.random() * 10) / 10;
- // return 'rgb(' + r + ',' + g + ',' + b + ')';
- return `rgba(${r},${g},${b},${a})`
- }
- console.log(getColor());
- var arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];
- var str = '#';
- function getColor2() {
- // 六位数
- for (var i = 0; i <6; i++) {
- // 索引数 = 长度 - 1
- str += arr[Math.floor(Math.random() * 16)];
- }
- return str;
- }
- console.log(getColor2());
- </script>
二, date 对象
用日期对象的时候一定要先 new 出来
- <script>
- // JS 中提供一个对象专门用来处理时间日期 Date 对象
- // Math 对象是一个静态对象. 就是使用的时候不需要 new 的对象
- // 使用日期对象的时候一定要先 new 出来
- var date = new Date(); //date 对象中存有日期相关的所有的数据
- console.log(date);//Fri Apr 24 2020 07:14:42 GMT+0800 (中国标准时间)
- console.log(date.toDateString()); //Fri Apr 24 2020
- console.log(date.toLocaleDateString()); //2020/4/24
- console.log(date.toTimeString()); //07:14:42 GMT+0800 (中国标准时间)
- console.log(date.toLocaleTimeString()); // 上午 7:14:42
- </script>
getTime() 返回毫秒数和 valueOf()结果一样
getMilliseconds() 当地时间返回时间的毫秒
getSeconds() 返回 0-59
getMinutes() 返回 0-59
getHours() 返回 0-23
getDay() 返回星期几 0 周日 6 周 6
getDate() 返回当前月的第几天, 当月的几号
getMonth() 返回月份, 从 0 开始
getFullYear() 返回 4 位的年份 如 2016
- var date = new Date();
- // 获取毫秒数
- console.log(date.getTime()); // 返回当前时间对应毫秒数
- // 获取毫秒
- console.log(date.getMilliseconds()); // 当前日期中的毫秒数 1 秒 = 1000 毫秒
- // 获取当前时间的秒数
- console.log(date.getSeconds());
- // 获取当前时间的分钟
- console.log(date.getMinutes());
- // 获取当前的小时
- console.log(date.getHours());
- // 获取日期(多少号)
- console.log(date.getDate());
- console.log(date.getDay()); // 星期几 而且是从 0 开始的, 一周的第一天是周日
- // 获取当前的月份
- console.log(date.getMonth()); // 月是从 0 开始算
- // 获取当前的年份 返回的是一个 4 位的年份
- console.log(date.getFullYear());
4. 案例
封装格式化时间
- <script>
- // 补 0
- let addZero = a => a <10 ? '0' + a : a;
- // 格式化时间
- let date = new Date();
- // 星期天是第一天
- let arr = ['星期天', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
- let y = date.getFullYear();
- let mon = date.getMonth() + 1;// 月从 0 开始
- let d = date.getDate();
- let h = date.getHours();
- let min = date.getMinutes();
- let s = date.getSeconds();
- let w = date.getDay();
- console.log(`${y}-${addZero(mon)}-${addZero(d)}\t${addZero(h)}:${addZero(min)}:${addZero(s)}\t${arr[w]}`);
- </script>
倒计时
- <script>
- let addZero = a => a <10 ? '0' + a : a;
- let date = new Date();
- // 倒计时的时间
- let date2 = new Date(2020, 11, 31);// 设置的时候, 月份要减 1
- // 倒计时距离现在的秒
- let time = (date2 - date) / 1000;
- // 将秒转化成天, 小时, 分钟
- let d = Math.floor(time / 60 / 60 / 24);
- // 将不够天数的转为小时
- let h = Math.floor(time / 60 / 60 % 24);
- let m = Math.floor(time / 60 % 60);
- var s = Math.floor(time % 60);
- console.log(` 距离 2020-12-31 还剩 ${addZero(d)}天 ${addZero(h)}时 ${addZero(m)}分 ${addZero(s)}秒 `);
- </script>
计算程序耗费时间
- <script>
- // 开始的时间戳
- let start = +new Date();
- // 程序体
- for (let i = 0; i <9999; i++) {
- console.log('小艾同学');
- }
- // 结束的时间戳
- let end = +new Date();
- // 耗费的毫秒
- let time = end - start;
- console.log(` 耗时 ${time}毫秒 `);
- </script>
三, String 对象
String 可以遍历, 但不能根据索引修改内容
String 的所有方法都不会修改原字符串
1.indexOf()
查询字符在字符串中的索引
- let str = '小艾 6866 同学 666';
- console.log(str.indexOf('艾'));//1
- // 当字符串有多个该字符, 只会返回第一个的索引
- console.log(str.indexOf(6));//2
- // 跟两个参数是, 前一个是要查询的字符, 后一个是 start 的索引
- console.log(str.indexOf(6, 6));//8
- // 当查询连续字符串时候, 是将它作为一个整体查询, 返回的第一个字符出现的索引
- console.log(str.indexOf(66));//4
- console.log(str.indexOf(9));//-1
- 2.trim()
去掉首尾的空格, 用于搜索条
- let str2 = '小 艾 同 学'
- console.log(str2);// 小 艾 同 学
- // 只会去除首尾空格, 中间的不回会去
- console.log(str2.trim());// 小 艾 同 学
3. 大小写
- let str3 = 'abcdEFG'
- console.log(str3.toUpperCase());//ABCDEFG
- console.log(str3.toLowerCase());//abcdefg
4.concat()字符串拼接
console.log(str.concat(str2, str3));
5. 截取字符串
- <script>
- let str = 'abcdefg';
- // 一个参数: 就是开始截取的索引 start, 从 strat 开始全部提取
- console.log(str.slice(2));//cdefg
- console.log(str.substring(2));//cdefg
- console.log(str.substr(2));//cdefg
- // 二个参数: 第一个参数是开始的索引 strat, 第二个是结束的索引 end
- // 从 start 开始截取到 end, 取不到 end
- console.log(str.slice(2, 4));//cd
- console.log(str.substring(2, 4));//cd
- // 二个参数: 第一个参数是开始的索引 strat, 第二个是截取的个数
- console.log(str.substr(2, 4));//cdef
- // substring 不能跟负数
- console.log(str.substring(-1));//abcdefg
- // 跟负数表示从后到前截取多少个
- console.log(str.substr(-2));//fg
- console.log(str.slice(-3));//efg
- // 始终不会改变原字符串
- console.log(str); //abcdefg
- </script>
6.replace()字符串替换
- // 前面是要把谁替换, 后面是替换他的新字符, 不限个数
- console.log(str.replace('d', 'DD'));//abcDDefg
- // 始终不会改变原字符串, 需要重新赋值才行
- console.log(str); //abcdefg
7.split()字符串切割
- <script>
- let str = 'a-b-c-d-e-f-g';
- // 参数是空字符串, 代表将字符串中的每一项都分开到一个新的数组中
- console.log(str.split(''));//["a","-","b","-","c","-","d","-","e","-","f","-","g"]
- // 参数是符号, 就是将字符串以该符号进行分割
- console.log(str.split('-'));//["a", "b", "c", "d", "e", "f", "g"]
- console.log(str);// 不会改变原字符串 //a-b-c-d-e-f-g
- </script>
- 8.charAt()
- // 根据索引查找该位置的字符串
- console.log(str.charAt(2));//b
四, 基本包装类型
只有 Number,String,Blooean 有基本包装类型, undefined 和 null 没有
- var num = 123;
- var result = num.toString();
- // // 发生了三件事情
- // 1. 把简单类型转换成复杂类型: var s = new Number(num);
- // 2. 调用包装类型的 toString 方法: var result = s.toString();
- // 3. 销毁刚刚创建的复杂类型
来源: http://www.bubuko.com/infodetail-3526314.html