JavaScript内建对象Math数学方法

JavaScript内建对象Math数学方法

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);
更改一个属性值会更改全部的属性值,因为引用地址相同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值