Math数学运算方法
Math的属性: E 返回算术常量 e,即自然对数的底数(约等于2.718)。 LN2 返回 2 的自然对数(约等于0.693)。 LN10 返回 10 的自然对数(约等于2.302)。 LOG2E 返回以 2 为底的 e 的对数(约等于 1.414)。 LOG10E 返回以 10 为底的 e 的对数(约等于0.434)。 PI 返回圆周率(约等于3.14159)。 SQRT1_2 返回返回 2 的平方根的倒数(约等于 0.707)。 SQRT2 返回 2 的平方根(约等于 1.414)。 Math.PI/180*60 角度转弧度
Math的方法: abs(x) 返回数的绝对值。 acos(x) 返回数的反余弦值。 asin(x) 返回数的反正弦值。 atan(x) 以介于 -PI/2 与 PI/2 弧度之间的数值来返回 x 的反正切值。 atan2(y,x) 返回从 x 轴到点 (x,y) 的角度(介于 -PI/2 与 PI/2 弧度之间)。 ceil(x) 对数进行上舍入。 cos(x) 返回数的余弦。 exp(x) 返回 e 的指数。 floor(x) 对数进行下舍入。 log(x) 返回数的自然对数(底为e)。 max(x,y) 返回 x 和 y 中的最高值。 min(x,y) 返回 x 和 y 中的最低值。 pow(x,y) 返回 x 的 y 次幂。Y填分数可以求x的y次根 random() 返回 0 ~ 1 之间的随机数。不包括0和1 round(x) 把数四舍五入为最接近的整数。只对正数部分起作用 sin(x) 返回数的正弦。 sqrt(x) 返回数的平方根。 tan(x) 返回角的正切。
console.log(Math.round(-3.6));//-4,可以看做-4+0.4,0.4四舍五入 console.log(Math.round(-3.4));//-3,可以看做-4+0.6,0.6四舍五入
案例:求数组中的最大值和最小值,并返回对象 方法一:
function getMaxMin(arr){ if(arr.length<1) return null; var obj={ max:arr[0], min:arr[0] } if(arr.length<2) return obj; for(var i=1;i<arr.length;i++){ if(obj.max<arr[i]) obj.max=arr[i]; if(obj.min>arr[i]) obj.min=arr[i]; } return obj; } var arr=[3,5,6,8,2,1,9]; var o=getMaxMin(arr); console.log(o);方法二:
var arr=[3,5,6,8,2,1,9] function getMaxMin(arr){ if(arr.length<1) return null; return { max:Math.max(...arr), min:Math.min(...arr) } } var o=getMaxMin(arr); console.log(o);求数组中的最大值(最小值同理)
var arr=[3,5,6,8,2,1,9]; // var max=Math.max.apply(null,arr);//ES5中的写法 var max=Math.max(...arr);//ES6的写法,求数组中的最大值 console.log(max);求两点之间最短距离
var point1={x:300,y:300}; var point2={x:400,y:400}; var dist=Math.sqrt(Math.pow(point2.x-point1.x,2)+Math.pow(point2.y-point1.y,2)); console.log(dist);生成min和max之间的随机数
function random(min,max){ return Math.floor(Math.random()*(max-min)+min) } console.log(random(10,20));1-100之间随机取四个数,不能有重复 方法一 乱序数组方法,数组中不会有重复的数,取4位
function getRandom(){ var arr=[]; for(var i=0;i<100;i++){ arr.push(i); } arr.sort(function(){ return Math.random()-0.5; //乱序数组 }) arr.length=4; return arr; }方法二 indexOf查找方法,如果重复不添加
function getRandom(){ var arr=[]; while(arr.length<4){ var item=Math.floor(Math.random()*100); if(arr.indexOf(item)<0) arr.push(item); } return arr; } console.log(getRandom());生成0-9a-zA-Z随机验证码
function getRandom(){ var arr=[]; for(var i=48;i<123;i++){ if(i>57 && i<65) continue; if(i>90 && i<97) continue; arr.push(String.fromCharCode(i)); } arr.sort(function(){ return Math.random()-0.5; }) arr.length=4; return arr.join(""); } console.log(getRandom())灰度测试
var div1=document.getElementById("div1"); div1.style.width="100px"; div1.style.height="100px"; div1.style.backgroundColor="red"; div1.onclick=function(){ div1.style.backgroundColor=getColor(); } function getColor(){ return "#"+Array(6).fill(Math.floor(Math.random()*16).toString(16)).join(""); }//新建一个6位空数组,arr.fill()填充相同的值,因为6位相同所以都是灰色 //转为16进制字符串+#,颜色 var arr=Array(6) arr.fill(3,2,5)表示从下标2开始直到下标5填入相同的内容3,超出数组长度不填 如果填入的是对象,那么填入的对象引用地址相同 arr.fill({a:1}); arr[0].a=10; console.log(arr); 更改一个属性值会更改全部的属性值,因为引用地址相同