Math任务
1、写一个函数,返回从min到max之间的 随机整数,包括min不包括max
function random(min,max){
return Math.floor(min+(max-min)*Math.random());
}
console.log(random(5,15));
2、写一个函数,返回从min都max之间的 随机整数,包括min包括max
<script>
function random(min,max){
return Math.round(min+(max-min)*Math.random());
}
console.log(random(5,15));
</script>
3、写一个函数,生成一个长度为 n 的随机字符串,字符串字符的取值范围包括0到9,a到 z,A到Z。
var dic='0123456789abcdefghijklmopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
function getRandomStr(len){
var newStr = '';
for (var i = 0; i<len; i++){
newStr += dic[Math.floor(dic.length*Math.random())];
}
return newStr;
}
console.log(getRandomStr(10));
4、写一个函数,生成一个随机 IP 地址,一个合法的 IP 地址为 0.0.0.0~255.255.255.255
function getRandIP(){
var randomIP =[];
for (var i = 0; i<4; i++)
randomIP.push(Math.round(255*Math.random()));
return randomIP.join('.');
}
var ip = getRandIP()
console.log(ip)
5、写一个函数,生成一个随机颜色字符串,合法的颜色为#000000~ #ffffff
var dic = '0123456789abcdef'
function getRandColor(){
var colorStr = '#';
for (var i = 0; i<6; i++)
colorStr += dic[Math.floor(dic.length*Math.random())];
return colorStr
}
var color = getRandColor()
console.log(color)
数组任务
1、数组方法里push、pop、shift、unshift、join、splice分别是什么作用?用 splice函数分别实现push、pop、shift、unshift方法
- push
// 在数组的末尾增加一个或多个元素,并返回数组的新长度。
var arr = [2, 3, 4];
arr.push(10);
console.log(arr); // 2, 3, 4, 10
- pop
// 删除数组的最后一个元素,并返回这个元素。。
var arr = [2, 3, 4];
arr.pop();
console.log(arr); // 2, 3,
- shift
// 删除数组的第一个元素,并返回这个元素。
var arr = [2, 3, 4];
arr.shift();
console.log(arr); // 3, 4
- unshift
// 在数组的开头增加一个或多个元素,并返回数组的新长度
var arr = [2, 3, 4];
arr.unshift(4, 5);
console.log(arr); // 4, 5, 2, 3, 4
- join
// 连接所有数组元素组成一个字符串。
var arr = [2, 3, 4];
console.log(arr.join('--')); // 2--3--4
- splice
// 在任意的位置给数组添加或删除任意个元素。
//
// 模拟 push
var arr = [2, 3, 4];
arr.splice(arr.length, 0, 10);
console.log(arr); // 2, 3, 4, 10
//
// 模拟 pop
var arr = [2, 3, 4];
arr.splice(--arr.length, 1);
console.log(arr); // 2, 3
//
// 模拟 shift
var arr = [2, 3, 4];
arr.splice(0, 1);
console.log(arr); // 3, 4
//
// 模拟 unshift
var arr = [2, 3, 4];
arr.splice(0, 0, 4, 5);
console.log(arr); // 4, 5, 2, 3, 4
2、写一个函数,操作数组,数组中的每一项变为原来的平方,在原数组上操作
function squareArr(arr){
for (var i=0; i<arr.length; i++)
arr[i] *= arr[i];
}
var arr = [2, 4, 6]
squareArr(arr)
console.log(arr) // [4, 16, 36]
3、写一个函数,操作数组,返回一个新数组,新数组中只包含正数,原数组不变
function filterPositive(arr){
return arr.filter(function(x){
return (typeof(x)==='number' && x!=NaN && x>0);
})
}
var arr = [3, -1, 2, '饥人谷', true]
var newArr = filterPositive(arr)
console.log(newArr) //[3, 2]
console.log(arr) //[3, -1, 2, '饥人谷', true]
Date 任务
1、 写一个函数getChIntv,获取从当前时间到指定日期的间隔时间
function getChIntv(str){
var x = Date.parse(str) - Date.now();
var tDays = Math.floor(x/(24*60*60*1000));
var tHours = Math.floor(x/(60*60*1000)) -(tDays * 24);
var tMins = Math.floor(x/(60*1000)) -((tDays * 24 + tHours) *60);
var tSecs = Math.floor(x/(1000)) -(((tDays * 24 + tHours) *60 + tMins)*60);
return '距离除夕还有 '+ tDays+' 天 '+ tHours+' 小时 '+ tMins+' 分 '+tSecs+' 秒 ';
}
var str = getChIntv("2018-02-17");
console.log(str); // 距除夕还有 20 天 15 小时 20 分 10 秒
2、把hh-mm-dd格式数字日期改成中文日期
var dic = '零一二三四五六七八九';
function getChsDate(str){
var arr=str.split('-'),
newStr = '';
for (var i=0; arr[0].length>i; i++)
newStr += dic[arr[0][i]];
function transNum(x){
var newDate='',
y = Math.floor(x/10);;
if (y>1) newDate += dic[y];
if (y>0) newDate += '十';
if (x%10 !== 0)newDate += dic[x%10];
return newDate;
}
return newStr+'年' + transNum(+arr[1]) + '月' + transNum(+arr[2]) + '日';
}
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 nowtime = Date.now();
var dicN = [1000*60,1000*60*60,1000*60*60*24,1000*60*60*24*30,1000*60*60*24*30*12],
dicS = ['刚刚','分钟前','小时前','天前','个月前','年前'];
if (nowtime - (+time) < 0 )
dicS = ['马上','分钟后','小时后','天后','个月后','年后'];
var x = Math.abs(nowtime - (+time));
if (x<dicN[0]) return (dicS[0]);
for (var i=1;i<5;i++)
if (x<dicN[i]) return Math.floor(x/dicN[i-1])+" "+dicS[i];
return Math.floor(x/dicN[i-1])+" "+dicS[i];
}
var a = new Date('2017-3-11');
var str = friendlyDate(a.getTime()) // 4 个月前
var str2 = friendlyDate('1500800941293') // 11 天后
console.log(str);
console.log(str2);