一、Math:处理数学问题,特点:不需要创建对象,直接类型名.方法:Math.方法()
1. 随机数random():Math.random()这个方法时用来生成0~1之间的随机数,每次执行后生成的数字都不一样,生成的数字包含0但不包含1;
2. 取整方法:Math.rond():四舍五入;Math.ceil():向上取整;Math.floor():向下取整
3. Math.abs():取绝对值,主要针对负数使用
4. Math.max():得到几个数(可以是整数、小数、正数、负数等)中最大的值
5. Math.min():得到几个数(可以是整数、小数、正数、负数等)中最小的值
6. Math.sqrt():返回数的平方根
7. Math.toSource():返回该对象的源代码
8. Math.valueOf():返回Math对象的原始值
示例:
<script>
// 生成10000个随机数0~10,统计每个随机数出现次数
var obj = {};
for (var i = 0; i <= 10000; i++) {
var num = Math.floor(Math.random() * 10);
if (obj[num]) {
obj[num]++;
} else {
obj[num] = 1;
}
}
console.log(obj);
for (var key in obj) {
console.log('key:', key, ' value:', obj[key]);
}
</script>
<script>
// 生成指定范围随机数 m~n之间的随机数
function getNumber(m, n) {
//避免调用时因为数字大小顺序而出现问题
var m1 = Math.min(m, n);
var n1 = Math.max(m, n);
console.log(Math.random() * (n1 - m1) + m1);
}
getNumber(10, 100);
</script>
二、数字转换进制
1. 数字以0x开头,表示为十六进制,以0开头表示为八进制,js会强制转换为十进制来运算。
2. toString()方法可以在数字转化为字符串时,给出一个进制数,转换为相应进制:
<script>
var num = 10;
console.log(num.toString(2));//转为二进制
console.log(num.toString(8));//转为八进制
console.log(num.toString(16));//转为十六进制
</script>
3. parseInt()方法可以在字符串转化为数字的时候把字符串当成多少进制来转化为十进制
语法:parseInt(要转换的字符串,当做多少进制)
<script>
var str = '100';
console.log(parseInt(str, 2));//将str当做2进制转化为十进制
console.log(parseInt(str, 8));//将str当做8进制转化为十进制
console.log(parseInt(str, 16));//将str当做16进制转化为十进制
</script>
三、Date:js提供的内置构造函数,专门用来获取时间
1. 获取时间对象:new Date(),括号中不传递参数时默认返回当前时间,传递参数后获取到自定义的时间:
2. new Date() 传递的参数有多种情况:
3. 常用方法
(1)getFullYear():得到年份
(2)getMonth():得到月份(计算机默认的月份是从0开始计算,与现实一致需要加1)
(3)getDate():得到那一天(号数)
(4)getHours():得到时
(5)getMinutes():得到分钟
(6)getSeconds():得到秒数
(7)getDay():得到周次(周日是0,周六是6)
(8)getTime():得到的时间是参数中自定义 时间到格林威治时间(计算机规定开始时间:格林威治时间 1970年1月1日(00:00:00 GMT))的毫秒数
计算时间差:
(1)先获取两个时间点到格林威治时间(1970年1月1日(00:00:00 GMT))的毫秒数
(2)两个时间相减得到相差的毫秒数,再将毫秒数转化为需要的时间单位
练习:
<script>
// url地址参数截取输出为对象
var url = 'http://www.qianfeng.com?username=admin&password=123';
var str = url.substring(url.indexOf('?') + 1, url.length);
console.log('str>>:', str);
var str2 = str.replace('&', '=');
console.log('str2>>:', str2);
var str3 = str2.split('=');
console.log(str3);
console.log(typeof str3);
var obj = {};
for (var i = 0; i < str3.length; i++) {
var key = str3[i];
obj[key] = str3[i + 1];
i++;
}
console.log(obj);
</script>
<script>
/*
js编程实现学生表格显示
var students = [
{ number: 1001, name: 'jack', score: 98, gender: '男' },
{ number: 1002, name: 'rose', score: 95, gender: '女' },
{ number: 1003, name: '小丽', score: 85, gender: '女' },
{ number: 1004, name: 'tom', score: 88, gender: '男' },
]
要求: 使用数组方法map + join实现
*/
var students = [
{ number: 1001, name: 'jack', score: 98, gender: '男' },
{ number: 1002, name: 'rose', score: 95, gender: '女' },
{ number: 1003, name: '小丽', score: 85, gender: '女' },
{ number: 1004, name: 'tom', score: 88, gender: '男' },
];
var str2 = students.map(function (item) {
return `<tr>
<td>${item.number}</td>
<td>${item.name}</td>
<td>${item.score}</td>
<td>${item.gender}</td>
</tr>`
})
var str2 = str2.join('');
var str3 = `<table> ${str2} </table>`
document.write(str3);
document.write('<br>');
</script>