Math对象
Math对象不是构造函数,它具有数学常数和函数的属性和方法,都是以静态成员的方式提供
跟数学相关的运算来找Math中的成员(求绝对值,取整)
1. Math.PI // 返回PI值
2. Math.floor() //向下取整
3. Math.ceil() // 向上取整
4. Math.round() // 取整,四舍五入
5. Math.abs() // 绝对值
6. Math.max() // 最大值
7. Math.min() // 最小值
8. Math.sin() // 正弦
9. Math.cos() // 余弦
10. Math.power() // 求指数次幂
11. Math.sqrt() // 求平方根
案例
- 求10-20之间的随机数
// 10 - 20之间的数字
for (var i = 0; i < 100; i++) {
var number = Math.random() * 11 + 10;
console.log(Math.floor(number));
}
- 随机生成颜色RGB
for (var i = 0; i < 20; i++) {
var r = Math.floor(Math.random() * 256 + 0);
var g = Math.floor(Math.random() * 256 + 0);
var b = Math.floor(Math.random() * 256 + 0);
console.log('rgb(' + r + ',' + g + ',' + b + ')');
}
- 模拟实现max()/min()
// 构造函数
function Create() {
this.max = function () {
var t = arguments[0]; // 存储最大值
for (var i = 1; i < arguments.length; i++) {
if (t < arguments[i]) {
t = arguments[i];
}
}
return t;
}
}
var myMath = new Create();
var max = myMath.max(1,2,3,4,56,22,12,234,53,2);
console.log(max);
Date对象
创建 Date
实例用来处理日期和时间。Date 对象基于1970年1月1日(格林威治GMT 世界标准时间)起的毫秒数。
var date = new Date(); // 通过new Date()来创建一个日期
date.valueOf(); // 通过valueOf来获取距离1970年1月1号返回的毫秒数,通常用于内部自动调用。
date.getTime(); // 和valueOf返回一样,推荐开发者用这种方式来获取。
Date构造函数的参数
1. 毫秒数 1498099000356 new Date(1498099000356)
2. 日期格式字符串 '2015-5-1' new Date('2015-5-1')
3. 年、月、日…… new Date(2015, 4, 1) // 月份从0开始
// 获取日期对象的毫秒值
var now = new Date();
// valueOf用于获取对象的原始值
console.log(date.valueOf())
// HTML5中提供的方法,有兼容性问题
var now = Date.now();
// 不支持HTML5的浏览器,可以用下面这种方式
var now = + new Date(); // 调用 Date对象的valueOf()
获取日期指定部分的方法
getTime()
// 返回毫秒数和valueOf()结果一样,valueOf()内部调用的getTime()getMilliseconds()
// 获取毫秒值getSeconds()
// 返回0-59getMinutes()
// 返回0-59getHours()
// 返回0-23getDay()
// 返回星期几 0周日 6周6getDate()
// 返回当前月的第几天getMonth()
// 返回月份,从0开始
getFullYear()
//返回4位的年份 如 2016
案例
- 写一个函数,格式化日期对象,返回yyyy-MM-dd HH:mm:ss的形式
function formatDate(d) {
//如果date不是日期对象,返回
if (!date instanceof Date) {
return;
}
var year = d.getFullYear(),
month = d.getMonth() + 1,
date = d.getDate(),
hour = d.getHours(),
minute = d.getMinutes(),
second = d.getSeconds();
month = month < 10 ? '0' + month : month;
date = date < 10 ? '0' + date : date;
hour = hour < 10 ? '0' + hour : hour;
minute = minute < 10 ? '0' + minute:minute;
second = second < 10 ? '0' + second:second;
return year + '-' + month + '-' + date + ' ' + hour + ':' + minute + ':' + second;
}
- 计算时间差,返回相差的天/时/分/秒
function getInterval(start, end) {
var day, hour, minute, second, interval;
interval = end - start;
interval /= 1000;
day = Math.round(interval / 60 /60 / 24);
hour = Math.round(interval / 60 /60 % 24);
minute = Math.round(interval / 60 % 60);
second = Math.round(interval % 60);
return {
day: day,
hour: hour,
minute: minute,
second: second
}
}
Array对象
- 创建数组对象的两种方式
- 字面量方式
- new Array()
利用Array对象创建对象
var arr = new Array(); // 创建一个空数组
var arr = new Array(1,2,3,4,5,6); // 创建一个数组
如何判断一个变量是不是数组对象
function fn(arr) {
// 判断参数是否是数组对象
// instanceof
// console.log(arr instanceof Array);
if (!(arr instanceof Array)) { // 注意加括号
console.error("报错");
}
}
数组的方法
// 1 栈操作(先进后出)
push()
pop() //取出数组中的最后一项,修改length属性
// 2 队列操作(先进先出)
push()
shift() //取出数组中的第一个元素,修改length属性
unshift() //在数组最前面插入项,返回数组的长度
// 3 排序方法
reverse() //翻转数组
sort(); //即使是数组sort也是根据字符,从小到大排序
// 带参数的sort是如何实现的?
// 4 操作方法
concat() //把参数拼接到当前数组
slice() //从当前数组中截取一个新的数组,不影响原来的数组,参数start从0开始,end从1开始
splice() //删除或替换当前数组的某些项目,参数start, deleteCount, options(要替换的项目)
// 5 位置方法
indexOf()、lastIndexOf() //如果没找到返回-1
// 6 迭代方法 不会修改原数组(可选)
every()、filter()、forEach()、map()、some()
// 7 方法将数组的所有元素连接到一个字符串中。
join()
清空数组
1. 第一种
var arr = [1, 2, 3, 4];
arr = []; // 清空数组,推荐使用这一种
2. 第二种
arr.length = 0; // 不推荐这种
3. 第三种
arr.splice(0, arr.length) // 不推荐