math任务
1.写一个函数,获取从min到max之间的随机整数,包括min不包括max
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min)) + min;
}
2.写一个函数,获取从min都max之间的随机整数,包括min包括max
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
3.写一个函数,生成一个长度为 n 的随机字符串,字符串字符的取值范围包括0到9,a到 z,A到Z
function getRandomArr(len,min,max){
var arr = new Array();
for(var i=1;i<=len;i++){
arr[i-1]=Math.floor(Math.random() * (max - min + 1)) + min;
}
return arr;
}
4.写一个函数,生成一个随机 IP 地址,一个合法的 IP 地址为 0.0.0.0~255.255.255.255
function getRandIP(){
var arr = new Array(4)
for (var i=0;i<4;i++){
arr[i]=Math.floor(Math.random()*256)
}
return arr.join('.')
}
var ip = getRandIP()
console.log(ip)
5.写一个函数,生成一个随机颜色字符串,合法的颜色为#000000~ #ffffff
function getRandColor(){
var str="0123456789abcdef"
var result='#'
for(var i=0;i<6;i++){
result += str[Math.floor(Math.random()*str.length)]
}
return result
}
var color = getRandColor()
console.log(color)
数组任务
1.数组方法里push、pop、shift、unshift、join、split分别是什么作用?用 splice函数分别实现push、pop、shift、unshift方法
- push:在数组最后加入一个元素
- pop:删除数组最后一个元素
- shift:删去数组第一个元素
- unshift:在数组开始加入一个元素
- join:将数组中多个字符串按一定规律连接为一个字符串
- split:将一个字符串用某个分隔符断开,可以和join看作互为逆操作
function pop(arr){
return arr.splice(arr.length-1,1)[0];
}
function push(arr,val){
arr.splice(arr.length,0,val);
return arr.length;
}
function shift(arr){
return arr.splice(0,1)[0];
}
function unshift(arr,val){
arr.splice(0,0,val);
return arr.length;
}
2.写一个函数,操作数组,数组中的每一项变为原来的平方,在原数组上操作
function squareArr(arr){
for(var i=0;i<arr.length;i++){
arr[i]=arr[i]*arr[i]
}
return arr
}
var arr=[2,4,6]
squareArr(arr)
console.log(arr)
3.写一个函数,操作数组,返回一个新数组,新数组中只包含正数,原数组不变
function filterPositive(arr){
var newArr=[]
for(var i=0;i<arr.length;i++){
if(typeof (arr[i])=='number' && arr[i]>0)
newArr.push(arr[i])
}
return newArr
}
var arr = [3,-1,2,'jirengu',true]
var newArr=filterPositive(arr)
console.log(arr)
console.log(newArr)
Date任务
- 写一个函数getChIntv,获取从当前时间到指定日期的间隔时间
function geChtIntv(str){
var ms1=Date.parse(str);
var now=new Date();
var ms2=now.getTime();
var abs=Math.abs(ms2-ms1);
abs=Math.floor(abs/1000);
var day=Math.floor(abs/86400);
abs=abs%86400;
var hour=Math.floor(abs/3600);
abs=abs%3600;
var min=Math.floor(abs/60);
abs=abs%60;
var sec=abs;
var d="距离"+str+" "+day+"天"+hour+"小时"+min+"分钟"+sec+"秒";
return d;
}
var str = getChIntv("2017-02-08");
console.log(str);
2.把hh-mm-dd格式数字日期改成中文日期
function getChsDate(str){
var chs=["零","一","二","三","四","五","六","七","八","九",
"十","十一","十二","十三","十四","十五","十六","十七","十八",
"十九","二十","二十一","二十二","二十三","二十四","二十五",
"二十六","二十七","二十八","二十九","三十","三十一"]
var date=new Date(str)
var year=new String(date.getFullYear())
var month=new String(date.getMonth()+1)
var day=new String(date.getDate())
var chsYear=''
var chsMonth
var chsDay
for(var i=0;i<year.length;i++){
chsYear+=chs[year[i]]
}
chsMonth=chs[month]
chsDay=chs[day]
var chsDate=chsYear+"年"+chsMonth+"月"+chsDay+"日"
return chsDate
}
var str = getChsDate('2015-01-08')
console.log(str)
3.写一个函数,参数为时间对象毫秒数的字符串格式,返回值为字符串。假设参数为时间对象毫秒数t,根据t的时间分别返回如下字符串:
- 刚刚( t 距当前时间不到1分钟时间间隔)
- 3分钟前 (t距当前时间大于等于1分钟,小于1小时)
- 8小时前 (t 距离当前时间大于等于1小时,小于24小时)
- 3天前 (t 距离当前时间大于等于24小时,小于30天)
- 2个月前 (t 距离当前时间大于等于30天小于12个月)
- 8年前 (t 距离当前时间大于等于12个月)
function friendlyDate(time){
var now = new Date()
var ms = now.getTime()
var abs = (ms-time)/1000
if(abs<60){
return '刚刚'
}else if(abs<3600){
return '3分钟前'
}else if(abs<86400){
return '8小时前'
}else if(abs<2592000){
return '3天前'
}else if(abs<31104000){
return '2个月前'
}else{
return '8年前'
}
}
var str = friendlyDate('1484286699422')
var str2 = friendlyDate('1483941245793')
var str3 = friendlyDate('1489741821034')
console.log(str)
console.log(str2)
console.log(str3)