JS中有许多的内置对象。其中,Math对象封装了许多常用的数学函数。
Math.random
该方法用于生成一个随机数0~1 包含0 不包含1
// 获取一个从0到9的随机整数数字
var r = Math.random();
var num = parseInt(Math.random() * 10);对于整个函数只是单纯的负责取整,而不是四色五入
console.log(num);
对于求取5-9之间的数字
// parseInt(Math.random() * 5 + 5) => 从5到9的随机数字
// 获取一个从0 ~ 4的随机数
// var num = Math.random() * 5;
// 让num + 5 变为从 5 ~ 9的随机数
// num = num + 5;
// 取整
// num = parseInt(num);
// console.log(num);
简单案例
// 完成:从数字中随机挑选一个成员
// var arr = ["张三", "李四", "王五", "赵六", "田七"];
// 获取随机数
// var r = Math.random();
// 让该随机数 乘以数组的长度
// var index = arr.length * r;如果对其结果取整的话,达不到数字5
// 取整
// index = parseInt(index);
// 根据index获取成员
// var result = arr[index];
// console.log("这一次选择的人是" + result);
// document.write(result);
Math.abs
该方法用于获取一个数的绝对值
// 定义一个负数
var num = -10;
// 获取它的绝对值
var abs = Math.abs(num);
// 输出
console.log(abs); // 10
取正5和负5之间的随机数
// var r = Math.random();
// var num = parseIn1t(r * 11 - 5);
// console.log(num);
// r * 11; 0 ~ 10
// r * 11 - 5; -5 ~ 5
// parseInt(r * 11 - 5); -5 ~ 5
// var abs = Math.abs(num);
// console.log(abs);
Math.ceil
向上取整
var num = 1.1;
var result = Math.ceil(num);
console.log(result); // 2
Math.floor
向下取整
var num = 1.1;
var result = Math.floor(num);
console.log(result); // 1
Math.round
四舍五入
var num = 1.4;
var num1 = 1.5;
console.log(Math.round(num)); // 1
console.log(Math.round(num1)); // 2
Math.pow
用于求一个数的几次方 第一个参数是底数 第二个参数是指数
var num = Math.pow(2, 8);
console.log(num); // 256
Math.max
求所有参数中的最大值
var max = Math.max(1, 2, 56, 78, 99, 0, 46, 23);
console.log(max); // 99
小案例
// 随机一个长度 10 ~ 50位的数组
// 随机填充一些数字 这些数字的范围 77 ~ 99
// 求该数组中的最大值
// 分析:
// 既然要随机生成一个不定长度的数组
// new Array(这里得有一个10 ~ 50的数) 解决方案: 利用Math.random() 获取10 ~ 50 代码: var length = parseInt(Math.random() * 41 + 10); 最终把length填入参数中 或者设置为数组的length属性
// 数组已经生成
// 循环生成77 ~ 99 的随机数
// Math.random() * 23 + 77//对于由于random得不到1,所以在乘的数上加1,可以达到22的数字大小;
// 生成长度
// var length = parseInt(Math.random() * 41 + 10);
// // 根据长度定义数组
// var arr = new Array(length);
// // console.log(arr);
// // 循环
// for (var i = 0; i < arr.length; i++) {
// arr[i] = parseInt(Math.random() * 23) + 77;
// }
// console.log(arr);
// var max = Math.max(...arr);
// 如果arr是 [1, 2, 3, 4] !!! 超纲语法 Math.max(...arr) !!! 该代码等价于 Math.max(1, 2, 3, 4);
// 如果arr是 [45, 76, 88, 101, 44] 该代码等价于 Math.max(45, 76, 88, 101, 44)
// var index = arr.indexOf(max); // 找到该最大值的位置
// 删除
// arr.splice(index, 1, "原来的最大值");
// console.log(arr);
Math.min
求min参数中的最小值
var min = Math.min(1, 2, 56, 78, 99, 0, 46, 23);
console.log(min); // 1
小案例
// 随机一个长度 10 ~ 50位的数组
// 随机填充一些数字 这些数字的范围 77 ~ 99
// 求该数组中的最大值
// 定义长度
// var length = parseInt(Math.random() * 41 + 10);
// 根据长度定义数组
// var arr = new Array(length);
// console.log(arr);
// 循环
// for (var i = 0; i < arr.length; i++) {
// arr[i] = parseInt(Math.random() * 23) + 77;
// }
// var result = Math.min(...arr); // 这里因为是超纲内容 所以不便过多介绍
// var result = Math.min.apply("", arr);
// apply方法介绍 它是函数的方法
// 1 改变函数中的this指向
// 2 以数组的形式传递参数
// 分析: 因为写法必须是 (第一种)函数.apply(); 而不能是(第二种)函数().apply()
// 因为 第一种的写法 函数本身没有自己执行 而是被apply执行
// 第二种的写法是 函数先执行 执行完以后 让函数的结果去调用apply
// 既然没有圆括号,那么如果原函数需要参数 这些参数就必须组装成一个数组 放入apply方法的第二个参数中
/*
Math.min(1, 2, 3, 4);
Math.min.apply("", [1, 2, 3, 4]);
*/
// console.log(result);
额外说明: …语法是ES6中的语法 可以将数组的每一个成员拆解成参数传递给函数
额外说明: apply方法是所有函数都有的方法 作用是改变函数中的this指向并以数组的形式传递参数