一、Math常用方法
Math.round(2.6) //四舍五入
Math.random() //返回0-1之间的随机数 [0,1)
Math.max(num1, num2) //返回较大的数
Math.min(num1, num2) //返回较小的数
Math.abs(num) //绝对值
Math.ceil(19.3) //向上取整 -2.9 -2 2.1 3
Math.floor(11.8) //向下取整 -2.9 -3 2.1 2
Math.pow(x,y) //x的y次方
Math.sqrt(num) //开平方
Math.PI //π 常量
二、 使用js实现二分查找
//arr:数组;key:查找的元素;start:开始索引;end:结束索引
function search(arr,key,start,end){
//首先判断当前起始索引是否大于结束索引,如果大于说明没有找到元素返回-1
if(start > end) {
return -1;
}
//如果手动调用不写start和end参数会当做第一次运行默认值
//三元表达式:如果不写end参数则为undefined说明第一次调用所以结束索引为arr.length-1
//如果是递归调用则使用传进来的参数end值
var end= end===undefined ? arr.length-1 : end;
//如果 || 前面的为真则赋值start,如果为假则赋值后面的0
//所以end变量没有写var end = end || arr.length-1;这样如果递归调用时候传参end为0时会被转化为false,导致赋值给arr.length-1造成无限循环溢出;
var start=start || 0;
//取中间的索引
var mid=parseInt((start+end)/2);
if(key==arr[mid]){
//如果找到则直接返回
return mid;
}else if(key<arr[mid]){
//如果key小于则递归调用自身,将结束索引设置为中间索引-1
return search(arr,key,start,mid-1);
}else{
//如果key大于则递归调用自身,将起始索引设置为中间索引+1
return search(arr,key,mid+1,end);
}
}
var arr = [0,11,23,35,48,56,69,75,87,96];
search(arr, 75); //7
search(arr, 100); //-1