十进制转换为其他进制
十进制数字.toString(其他进制的数)
var num = 100
num.toString(2) // 将 10 进制的 100, 转换为 2 进制的数, 得到了: '1100100'
num.toString(36) // 将 10 进制的 100, 转换为 36 进制的数, 得到了: '2s'
其他进制转为十进制
var num = parseInt(数字, 将数字视为几进制的数字然后转换为10进制的数字)
var num = parseInt(100, 2) // 将100视为2进制的数, 然后将其转换为十进制的数字, 得到了: 4
var num = parseInt(100, 16) // 将100视为16进制的数, 然后将其转换为十进制的数字, 得到了: 256
保留小数 toFixed, 保留小数时四舍五入,且返回字符串
var num = 100.123456789
var num1 = num.toFixed(2) // 100.12
var num2 = num.toFixed(4) // 100.1235
Math 数学方法
是js提供的一个对象,内部有很多个 方法/函数 给我们使用
random 求一个随机数字 0~1 但不包含1
console.log(Math.random())
四舍五入
console.log(Math.round(100.4)) //100
console.log(Math.round(100.5)) //101
向下取整
console.log(Math.floor(100.00000000000001)) //100
console.log(Math,floor(100.99999999999999)) //100
向上取整
console.log(Math.ceil(100.0000001)) // 101
console.log(Math.ceil(100.9999999)) // 101
随机函数
// 随机函数 -> 要求封装一个函数, 这个函数能够计算出一个 0~10 的随机整数
function fn() {
// 1. 先拿到随机数
var num = Math.random()
// 2. 将随机数放大 10 倍
num *= 10
// 3. 将随机数取整 (四舍五入)
num = Math.round(num)
// 4. 将计算后的随机数 返回
return num
}
console.log(fn())
统计一个数 随机出现的次数
function fn() {
// 1. 先拿到随机数
var num = Math.random()
// 2. 将随机数放大 10 倍
num *= 10
// 3. 将随机数取整 (四舍五入)
num = Math.round(num)
// 4. 将计算后的随机数 返回
return num
}
console.log(fn())
基本版
var obj = {}
for(var i = 1; i <= 11000; i++){
var num = fn()
// console.log(i, '===>', num)
if (obj[num] === undefined) {
// 当前分支执行, 表明 num 内部存储的随机数字 是 第一次出现
obj[num] = 1
} else {
// 当前分支执行, 表明 num 内部存储的随机数字 之前出现过
// obj[num] = obj[num] + 1
obj[num] += 1
}
}
console.log(obj)
优化1
ar obj = {}
for (var i = 1; i <= 11000; i++) {
var num = fn()
// if (obj[num] === undefined) {
if (!obj[num]) {
// 当前分支执行, 表明 num 内部存储的随机数字 是 第一次出现
obj[num] = 1
} else {
// 当前分支执行, 表明 num 内部存储的随机数字 之前出现过
obj[num] += 1
}
}
console.log(obj)
优化2
var obj = {}
for (var i = 1; i <= 11000; i++) {
var num = fn()
// obj[num] = 1
// obj[num] = obj[num] + 1
obj[num] = obj[num] ? obj[num] + 1 : 1
}
console.log(obj)
随机函数概率优化
1. 得到一个随机数字0~0.99
2. 随机数字放大 10 倍 0 ~ 9.9
3. 四舍五入取整
00.49 => 0
0.51.49 => 1
1.52.49 => 2
....
9.59.99 => 10
解决:
除了 四舍五入之外
向上取整
-0.999.99
向下取整
010.99
function fn() {
// 1. 先拿到随机数
var num = Math.random()
// 2. 将随机数放大 11 倍
num *= 11
// 3. 将随机数取整 (向下取整)
num = Math.floor(num)
// 4. 将计算后的随机数 返回
return num
}
// 概率统计
var obj = {}
for (var i = 1; i <= 11000; i++) {
var num = fn()
obj[num] = obj[num]
? obj[num] + 1
: 1
}
console.log(obj)
Math关键字补充
搜索的关键字: JS Math MDN
绝对值
console.log(Math.abs(10))
console.log(Math.abs(-10))
最大值 需要传递多个数字,然后能够判断出这些数字中的最大值,不能直接传递数组
console.log(Math.max(1,2,3,8,9,4,6))
console.log(Math.max[2,5,6,8,9,3,6])
最小值,规则和最大值相同,只不过返回的是这些数字中 最小的值
console.log(Math.min(3,6,8,9,4,5,8,1))
conaole.log([3,6,9,8,4,5,1,2,6,7,5,6])
让 最大值和最小值能够接受数组 后续ES6 ,会详细讲解
console.log(Math.max(...[100,59,77,201,566]))
var arr = [100,59,77,201,566]
console.log(Math.min(...arr))
时间对象
通过 内置的构造函数 创建一个 时间对象,并保存在变量 date 中
var date = new Date() //注意: 时间对象的内容就是当前的时间
console.log(date) //注意: 时间对象如果直接打印,那么看到的就是一个字符串
传参
var date = new Date(2018) //一个数字不允许 var date = new Date(2018, 8) //注意: 时间对象中 月份 是 0~11 var date = new Date(2018, 8, 23) var date = new Date(2018, 8, 23, 17) var date = new Date(2018, 8, 23, 17, 39, 56) console.log(date)
// 请参考笔记 自行完成 传参方式 2, 总结出注意点
console.log(new Date('2019')) // Tue Jan 01 2019 08:00:00 GMT+0800 (中国标准时间)
console.log(new Date('2019-02')) // Fri Feb 01 2019 08:00:00 GMT+0800 (中国标准时间)
console.log(new Date('2019-02-28')) // Thu Feb 28 2019 08:00:00 GMT+0800 (中国标准时间)
console.log(new Date('2019-02-28 13:')) // Thu Feb 28 2019 13:00:00 GMT+0800 (中国标准时间)
console.log(new Date('2019-02-28 13:13:')) // Thu Feb 28 2019 13:13:00 GMT+0800 (中国标准时间)
console.log(new Date('2019-02-28 13:13:13')) // Thu Feb 28 2019 13:13:13 GMT+0800 (中国标准时间)
时间对象的获取操作
因为时间本身打印出来是一个普通字符串,我们想要的到里面的信息相对比较麻烦
所以对象提供了一些方法能让我们更简单的获取到时间对象内部的一些信息
var date = new Date()
console.log(date)
// 1. 年
console.log(date.getFullYear())
// 2. 月
console.log(date.getMonth()) // 注意: 月份是0~11
// 3. 天
console.log(date.getDay()) // 本周的第几天
console.log(date.getDate()) // 本月的第几天
// 4. 时
console.log(date.getHours())
// 5. 分
console.log(date.getMinutes())
// 6. 秒
console.log(date.getSeconds())
// 7. 获取当前距离 1970.1.1 0:0:0 所过去的总毫秒数
console.log(date.getTime())
时间对象的设置操作
// var date = new Date()
// 1. 年
date.setFullYear(2022)
console.log(date.getFullYear())
// 2. 月
date.setMonth(8)
console.log(date.getMonth())
// 3. 日
// date.setDay(1) // JS 中的时间对象没有给我们提供修改 周几的方法
date.setDate(24) // 修改了 每月的第几天后 每周的第几天也会同步发生变化
console.log(date.getDate())
// console.log(date.getDay())
// 4. 时
date.setHours(18)
console.log(date.getHours())
// 参考上述写法 补全下列两个方法
// 5. 分
date.setMinutes(23)
console.log(date.getMinutes())
// 6. 秒
date.setSeconds(56)
console.log(date.getSeconds())
var timer = new Date(2022, 20, 31, 23, 59, 59)
console.log(timer) // Mon Jan 31 2022 23:59:59 GMT+0800 (中国标准时间)
console.log(timer.getFullYear()) // 2022