你好javascript day9
1)Math方法
Math.abs();//绝对值
Math.floor();//向下舍入
Math.ceil();//向上舍入
Math.round();//四舍五入
// 负数的四舍五入,一般都是转换为正数处理
var max=Math.max(3,5,7,9,10);//求最大值 10
var min=Math.min(3,5,7,9,10);//求最小值 3
console.log(max,min);//10 3
// 求数组元素的最大值和最小值
var arr=[3,6,9,1,5,4];
var max=Math.max.apply(null,arr);
var min=Math.min.apply(null,arr);
console.log(max); //9
x数的y次幂 Math.pow(x,y);
// 两点距离公式
function getDistance(point1,point2){
return Math.sqrt(Math.pow(point2.x-point1.x,2)+Math.pow(point2.y-point1.y,2));
}
var point1={x:100,y:100};
var point2={x:200,y:200};
var v=getDistance(point1,point2);
console.log(v);
2)string字符方法
// 这个字符串是存在栈中的
var str="abcdef";
// 这个字符串是存在堆中,构造函数创建的一般都是对象,字符型对象
// var str1=new String("abcdef");
str[1]="z";
console.log(str[1]);
下标的写法,我们可以获取字符串中第几位的字符,但是不能修改设置
length 字符的长度,就是字符串有多少字符组成,字符串的长度无法修改
length不可以修改
charAt(下标);
charCodeAt(下标); 将字符转为Unicode编码
String.fromCharCode(46) 将编码转换为字符串
concat 连接字符串 和连接数组一样的用法
indexOf lastIndexOf 和数组中indexOf相同查找字符所在下标
search match 查找 用于正则表达式
replace 替换 类似于数组中的splice();
》 数组的splice是修改原数组的内容
》但是replace不修改原字符的内容,会返回一个被修改后的新字符串
》如果出现两个相同的元素,那么只修改第一次被查找到的元素
slice(从下标几开始,到下标几之前结束) 截取复制字符串 允许有负值,负值表示从后向前
substring 和slice相似 不允许负数,所有的负值指0之前,因此负数都是0
substr(从下标几开始,截取长度);
split(分隔符) 将字符串以分隔符进行分割转换为数组
reverse();数组元素倒序或者反转
toLowerCase转为小写
toUpperCase转为大写
常用字符Unicode编码
// 0 48
// 9 57
// a 97
// z 122
// A 65
// Z 90
// 验证码 防止高并发
function getSecurityCode(){
var arr=[];
for(var i=48;i<123;i++){
if(i>57 && i<65){
i=64;
continue;
}
if(i>90 && i<97){
i=96;
continue;
}
arr.push(String.fromCharCode(i));
}
arr.sort(function(){
return Math.random()-0.5;
});
arr.length=4;
return arr.join("");
}
var str=getSecurityCode();
console.log(str);
处理引用地址
function getURLObj(url) {
// url.split("?") 就可以将url以?分为数组的两个元素
// [1] 将刚才分割的数组的最后一项获取,获取的内容就是?后面的字符串
// .split("&") 将?后面的字符串用&符切割为数组
// reduce是返回一个值 在reduce的第二个参数中给入{},表示给初始值是一个空对象
// value就是刚才给入的初始值对象
console.log(url.split("?")[1].split("&"));
return url
.split("?")[1]
.split("&")
.reduce(function(value, item) {
// value就是刚开始空对象
// item就是切好的数组每个元素,例如"fd=t";
// 用=切割为数组
// 给value对象增加属性为=的左边的字符,值为=右边的内容
// value["fd"]="t";
var arr = item.split("=");
value[arr[0]] = arr[1];
// 返回这个对象,用于下一次的的添加属性
return value;
}, {});
}
var o = getURLObj(str);
console.log(o);
3)日期对象
创建日期对象
var date=new Date();
date.getFullYear();获取年份
date.getYear();
date.getMonth()+1;获取月份 从0开始
date.getDate();获取日期
date.getDay();获取星期 从0开始 0就是星期日 1是星期1
date.getHours();获取小时
date.getMinutes();获取分钟
date.getSeconds();获取秒钟
date.getMilliseconds();获取毫秒
date.toLocaleString();转换为本地设置格式时间字符串
date.toUTCString();转换为格林尼治时间字符串
date.getTime();毫秒数,1970.1.1 0:0:0 到现在的毫秒数
倒计时
var targetTime,times,ids;
init();
function init(){
times=document.getElementById("times");
var date=new Date();
// 设置时间3小时后
date.setHours(date.getHours()+3);
// 获取这个时间的毫秒数,未来的时间戳,这个时间到1970.1.1的毫秒数
targetTime=date.getTime();
// 每16毫秒执行下面的函数
ids=setInterval(enterFrame,16);
}
function enterFrame(){
// 每间隔16毫秒执行这个函数
// 重新获取当前的时间
var date=new Date();
// 重新获取当前时间戳 现在到1970.1.1的毫秒数
var time=date.getTime();
// console.log(targetTime-time);//10795679 毫秒
// 用未来到1970.1.1的毫秒数-现在到1970.1.1的毫秒数,这个就是现在到未来的时间差毫秒数
// 这是毫秒变成秒数,就要/1000,做四舍五入,进到秒
time=Math.round((targetTime-time)/1000);
// 10796 秒 1小时3600秒
// 1小时是3600秒 除3600向下取整就是小时数
var hours=Math.floor(time/3600);
// 1小时3600毫秒,除3600取余数,就是除了小时之外的所有秒数,除60是分钟
var minutes=Math.floor((time%3600)/60);
// 用当前秒-小时所用的秒-分所用的秒,就是剩余的秒数
var seconds=time-hours*3600-minutes*60;
times.innerHTML=(hours<10 ? "0"+hours : hours)+":"+
(minutes<10 ? "0"+minutes : minutes)+":"+
(seconds<10 ? "0"+seconds : seconds);
if(hours+minutes+seconds===0){
clearInterval(ids);
}
}