原生对象
Math对象
Math 是 JavaScript 的原生对象,提供各种数学功能。
该对象不是构造函数,不能生成实例,所有的属性和方法都必须在 Math 对象上调用。
// console.log(Math); // {} 它里面有很多的属性和方法,针对数学计算的
console.log(Math.floor(3.999)); // 3 向下取整 去掉小数部分
console.log(Math.ceil(3.001)); // 4 向上取整 只要有小数就进位
console.log(Math.round(3.14159)); // 3 四舍五入
console.log(Math.abs(-100)); // 100 绝对值
console.log(Math.max(1, 2, 36, 9)); // 36 取参数的最大值
console.log(Math.min(1, 2, 36, 9)); // 1 取参数的最小值
console.log(Math.pow(2, 10)); // 1024 2的10次方
console.log(Math.pow(3, 2)); // 9 3的平方
console.log(Math.sqrt(60)); // 7-8 开根号
随机数
随机数:大于等于0小于1的一个数
for (var i = 0; i < 20; i++) {
console.log(Math.random());
}
公式
- 1、大减小加1
- 2、乘以随机数
- 3、加上最小数
- 4、向下取整
// 随机数公式
function getRandom(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min);
}
for (var i = 0; i < 20; i++) {
console.log(getRandom(10, 100));
}
案例:抽奖、验证码
时间对象
创建时间
创建一个时间,它是一个对象,它下面有很多的属性和方法
// 没有参数,创建的是电脑此时此刻的时间
var d = new Date();
console.log(d); // {} 它是一个对象,它下面有很多的属性和方法
console.log(typeof d); // 'object'
console.log(d.toString()); // 转字符串
console.log(d.toLocaleString()); // 转当地的时间字符串
// -------------------------------
// 1、有参数(全数字)
var d = new Date(2030, 9, 1, 12, 12, 12); // 2030年10月1日 12点12分12秒 月要减1
// 2、有参数(字符串参数)
var d = new Date('2030-12-1 12:12:12'); // 2030年12月1日 12点12分12秒
var d = new Date('2030/11/1 12:12:12') // 2030年11月1日 12点12分12秒
var d = new Date('2030,11,1 12:12:12') // 2030年11月1日 12点12分12秒
// 3、时间戳
var d = new Date(-86309844266320);
console.log(d.toLocaleString());
时间的字符串表示
var d = new Date();
// 英文
console.log(d.toString());
console.log(d.toTimeString());
console.log(d.toDateString());
console.log('---------------------------------');
// 中文
console.log(d.toLocaleString());
console.log(d.toLocaleTimeString());
console.log(d.toLocaleDateString());
获取时间的某一部分
var d = new Date(); // {}
var year = d.getFullYear(); // 年
var month = d.getMonth(); // 月,返回的是0--11,代表1--12
var day = d.getDate(); // 日
var week = d.getDay(); // 星期 ,返回0--6,代表周日--周六
var h = d.getHours(); // 小时
var m = d.getMinutes(); // 分钟
var s = d.getSeconds(); // 秒
console.log(year, month, day, week, h, m, s);
案例:数字时钟
设置时间的某一部分
var d = new Date();
d.setFullYear(2030); // 设置年为2030
d.setMonth(15); // 设置月 具有容错的能力
d.setDate(45); // 设置日 具有容错能力
console.log(d.toLocaleString());
时间戳
// 时间戳:从1970年1月1日0时到这个时间的毫秒数
// 方式一
var d = new Date();
console.log(d.getTime()); // 1630984426632
// 方式二,只能返回当前的时间戳,IE8及以下不支持
console.log(Date.now()); // 1630984426632
Date.parse();
案例:倒计时
moment.js
官网:http://momentjs.cn/
moment.js是一个轻量级的JavaScript时间库,它方便了日常开发中对时间的操作,提高了开发效率。日常开发中,通常会对时间进行下面这几个操作:比如获取时间,设置时间,格式化时间,比较时间等等。通过moment.js可以快速的格式化时间,得到想要的格式。
下载:http://cdn.staticfile.org/moment.js/2.24.0/moment.js
创建时间
// 创建时间
var d = moment(); // 创建当前时间
var d = moment('2030-12-12');
var d = moment('2030-12-12 12:12:12');
var d = moment('20301212');
var d = moment(Date.now() + 86400000); // 接收时间戳
console.log(d.format('YYYY年MM月DD日 HH:mm:ss'));
格式化时间
var d = moment();
// format格式化,我们可以给format传参
console.log(d.format('YYYY')); // 年
console.log(d.format('MM')); // 月
console.log(d.format('DD')); // 日
console.log(d.format('d')); // 星期 返回0--6
console.log(d.format('HH')); // 小时
console.log(d.format('mm')); // 分钟
console.log(d.format('ss')); // 秒
console.log(d.format('x')); // 只含秒的时间戳
console.log(d.format('YYYY年MM月DD日 HH:mm:ss')); // 2020年05月26日 11:36:16
添加时间
// 添加时间
// 格式:时间.add(增加的数量, 时间的键);
var d = moment().add(7, 'day'); // 7天以后
var d = moment().add(7, 'year'); // 7年以后
console.log(d.format('YYYY年MM月DD日 HH:mm:ss'))
减少时间
// 减少时间
// 格式:时间.subtract(减少的数量, 时间的键);
var d = moment().subtract(7, 'day'); // 7天以前
var d = moment().subtract(7, 'year'); // 7年以前
console.log(d.format('YYYY年MM月DD日 HH:mm:ss'));
字符串对象
字符串创建
// 1、字面量,单双引号引着的就是字符串
var str1 = '平头哥';
console.log(str1, typeof str1);
// 2、方法创建
var str2 = String('平头妹');
console.log(str2, typeof str2); // 平头妹 string
// 3、构造函数创建
var str3 = new String('welcome');
console.log(str3, typeof str3); // {"welcome"} "object"
字符串属性和方法
var str = '小芳约不';
// 1、长度
console.log(str.length); // 4
// 2、下标,可以通过下标获取某一个字符
// 字符串[下标] 字符串.charAt(下标)
console.log(str[1]); // 芳
console.log(str.charAt(2)); // 约
// 3、循环:因为字符串有长度,又可以通过下标获取某一个字符,所以可以循环
for (var i = 0; i < str.length; i++) {
console.log(str[i]);
}
// ---------------------------
// 4、charCodeAt: 返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535之间的整数
console.log(str.charCodeAt(0)); // 小 23567
console.log(str.charCodeAt(1)); // 芳 33459
console.log(str.charCodeAt(2)); // 约 32422
console.log(str.charCodeAt(3)); // 不 19981
// 5、将Unicode编码转成汉字
console.log(String.fromCharCode(23567, 33459, 32422, 19981)); // 小芳约不
indexOf和lastIndexOF
- 字符串.indexOf(要查找的字符, 查找的起始位置); 从左向右找
- 字符串.lastIndexOf(要查找的字符, 查找的起始位置); 从右向左找
作用:返回查找字符在这个字符串中的下标,没有返回-1
案例:字符串去重
字符串截取
var str = 'abcdefg';
// 字符串.substring(截取的起始位置, 截取的结束位置);
console.log(str.substring()); // abcdefg 没有参数,返回全部
console.log(str.substring(2)); // cdefg 有一个参数,从参数处开始到最后
console.log(str.substring(2, 5)); // cde 从第一个参数开始到第二个参数结束,但是不包括第二个参数
console.log(str.substring(-2, 5)); // abcde 负数相当于0
console.log(str.substring(5, -2)); // abcde 如果第一个参数比第二个参数大,则交换
// ---------------------------------------
// 字符串.slice(截取的起始位置, 截取的结束位置); 推荐使用
// 1、负数和长度相加,2、第一个参数比第二个参数大返回空
// 截取的标准方法
var str = 'abcdefg';
console.log(str.slice()); // abcdefg 没有参数,返回全部
console.log(str.slice(2)); // cdefg 有一个参数,从参数处开始到最后
console.log(str.slice(2, 5)); // cde 从第一个参数开始到第二个参数结束,但是不包括第二个参数
console.log(str.slice(2, -2)); // cde 负数同长度相加
console.log(str.slice(5, 2)); // '' 第一个参数比第二个参数大,不交换位置,返回空字符
// ---------------------------------------------
var str = 'abcdefg';
// 字符串.substr(起始下标, 截取的个数)
console.log(str.substr()); // abcdefg 没有参数,返回全部
console.log(str.substr(2)); // cdefg 有一个参数,从参数处开始到最后
console.log(str.substr(2, 2)); // cd 从第一个参数开始,截两个
// 截取字符串"abcdefg"中的def
var str = 'abcdefg';
console.log(str.slice(3, 6)); // 'def'
转大小写
var str = 'abcd';
var s = str.toUpperCase(); // 转大写
console.log(s); // ABCD
var m = s.toLowerCase(); // 转小写
console.log(m); // abcd
字符串split 和 数组join
// 字符串.split(参数)
// 作用:将字符串以参数拆分成数组
var str = '2023-12-21';
console.log(str.split('-')); // ["2023", "12", "21"]
console.log(str.split()); // ["2023-12-21"]
console.log(str.split('')); // ["2", "0", "2", "3", "-", "1", "2", "-", "2", "1"]
// --------------------------
// 数组.join(参数)
// 作用:将数组以参数拼接成字符串
var arr = ["2023", "12", "21"];
console.log(arr.join('-')); // 2023-12-21
console.log(arr.join()); // 2023,12,21
console.log(arr.join('')); // 20231221
replace (翻转)
// 字符串.replace(被替换的字符, 新的字符串);
// 返回被替换以后的字符串,不影响原字符串
var str = '我就是我';
var s = str.replace('我', '平头哥');
console.log(s); // '平头哥就是我'
console.log(str); // '我就是我'
trim
// 字符串.trim();
// 作用:去除字符串左右空格
// IE8及以下不支持(正则里解决)
var str = ' 小芳,约不 ';
console.log('(' + str + ')');
console.log('(' + str.trim() + ')');
字符串比较
// 如果两边都是字符串,则是字符串的比较,字符串比较的字符编码,从左向右,一位一位的比较
// 常用字符对应编码:“0”---48,“A”---65,“a”---97。
console.log(12 > 2); // true
console.log(12 > '2'); // true
console.log('12' > '2'); // false
console.log('A' < 'a'); // true