一、Math
1、写一个函数,返回从min到max之间的 随机整数,包括min不包括max
Math.random();//返回一个大于等于0,小于1的伪随机数。
1. function getRandom(min,max){
return min+(Math.random()*(max-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 getRandStr(len){
var dist='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXZY';
var str='';
for(var i=0;i
4、写一个函数,生成一个随机 IP 地址,一个合法的 IP 地址为 0.0.0.0~255.255.255.255
function getRandIP(){
var arr=new Array(4);
for(var i=0;i
5、写一个函数,生成一个随机颜色字符串,合法的颜色为#000000~ #ffffff
function getRandStr(){
var dist='0123456789abcdef';
var str='#';
for(var i=0;i<6;i++){
var index=Math.floor(Math.random()*16);
var ch=dist[index];
str+=ch;
}
return str;
}
var s=getRandStr();
console.log(s);
二、数组
1、数组方法里push、pop、shift、unshift、join、splice分别是什么作用?用 splice函数分别实现push、pop、shift、unshift方法
push():将一个或多个元素添加到数组的末尾,并返回数组的新长度。
如:
var numbers = [1, 2, 3];
numbers.push(4);
console.log(numbers); // [1, 2, 3, 4]
pop():从数组中删除最后一个元素,并返回该元素的值。此方法更改数组的长度。
let a = [1, 2, 3];
a.length; // 3
a.pop(); // 3
console.log(a); // [1, 2]
a.length; // 2
shift():从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度
var a = [1, 2, 3];
var b = a.shift();
console.log(a); // [2, 3]
console.log(b); // 1
unshift():方法将一个或多个元素添加到数组的开头,并返回新数组的长度
var a = [1, 2, 3];
a.unshift(4, 5);
console.log(a);// [4, 5, 1, 2, 3]
join():将数组或类数组对象的所有元素连接到一个字符串中。join() 方法,不会改变数组!
var a= ['Wind', 'Rain', 'Fire'];
a.join(); //默认为 ",", 'Wind,Rain,Fire'
a.join(""); //'Wind-Rain-Fire'
a.join("-"); //'Wind-Rain-Fire'
console.log(a);// ['Wind', 'Rain', 'Fire']
splice():方法通过删除现有元素和/或添加新元素来更改数组的内容。
array.splice(start, howmany, item1, item2, ...)
splice() 方法会直接对数组进行修改。
var myFish = ["angel", "clown", "mandarin", "surgeon"];
var removed = myFish.splice(2, 0, "drum");//从第 2 位开始删除 0 个元素,插入 "drum"
console.log(removed);//["angel", "clown", "drum", "mandarin", "surgeon"]
用 splice函数分别实现push、pop、shift、unshift方法
var Obj={
push: function push(arr,item){
arr.splice(arr.length,item);
return arr
},
pop: function pop(arr){
arr.splice(arr.length-1,1);
return arr;
},
shift: function shift(arr){
arr.splice(0,1);
return arr;
},
unshift:function unshift(arr,index,item){
arr.splice(0,0,item);
return arr;
}
};
var a=Obj.push([1,2,3],3);
console.log(a);//[1, 2, 3]
var b=Obj.pop([1,2,3]);
console.log(b);//[1, 2]
var c=Obj.shift([1,2,3]);
console.log(c);//[2, 3]
var d=Obj.unshift([1,2],3);
console.log(d);//[3, 1, 2]
//把题目理解错误了
2、写一个函数,操作数组,数组中的每一项变为原来的平方,在原数组上操作
function squareArr(arr){
for (var i=0;i
3、写一个函数,操作数组,返回一个新数组,新数组中只包含正数,原数组不变
function filterPositive(arr){
var newArr=[];
for(var i=0;i0&&typeof arr[i]==='number'){
newArr.push(arr[i]);
}
}
return newArr;
}
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(time){
var endTime = new Date(time).getTime();
var nowTIime=new Date().getTime();
var offsetTime=parseInt((endTime-nowTIime)/1000);//秒
var days=parseInt(offsetTime/(60*60*24));
var hours=parseInt((offsetTime/(60*60)%24));
var minites=parseInt(offsetTime/60%60);
var seconds=parseInt(offsetTime%60);
days=days<10?"0"+days:days;
hours=hours<10?"0"+hours:hours;
minites=minites<10?"0"+minites:minites;
seconds=seconds<10?"0"+seconds:seconds;
return "距6月3日还有"+days+"天"+hours+"小时"+minites+"分"+seconds+"秒";
}
var str = getChIntv("2017-06-03 00:00:00");
console.log(str); // 距6月3日还有00天02小时15分59秒
2、把hh-mm-dd格式数字日期改成中文日期
function getCh(str) {
var newStr=str.split("-");//["2017", "08", "09"]
console.log(newStr);
var years=newStr[0];
var mouth=newStr[1];
var days=newStr[2];
var dict=["零","一","二","三","四","五","六","七","八","九","十","十一","十二","十三","十四","十五","十六","十七","十八","十九","二十","二十一","二十二","二十三","二十四","二十五","二十六","二十七","二十八","二十九","三十","三十一"];
var chYears=dict[parseInt(years[0])]+dict[parseInt(years[1])]+dict[parseInt(years[2])]+dict[parseInt(years[3])]+"年";
var chMouth=dict[parseInt(mouth)+'']+"月";
var chDays=dict[parseInt(days)+'']+"日";
var newDate=[];
newDate.unshift(chYears,chMouth,chDays);
var res=newDate.join("");
return res;
}
var str="2017-08-09";
var a = getCh(str);
console.log(a);//二零一七年八月九日
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=new Date().getTime();//当前时间距离1970年的毫秒数
var startTime=new Date(time).getTime();
var t=parseInt(nowTime-startTime)/1000;//秒
if(t/60<1){
return "刚刚"
}else if((t>=60)&&(t<=3600)){
return parseInt(t/60)+"分钟前";
}else if(t>=(60*60)&&(t<=(60*60*24))){
return parseInt(t/3600%24)+"小时前";
}else if((t>=(60*60*24))&&(t<=(60*60*24*30))){
return parseInt(t/(60*60*24))+"天前";
}else if((60*60*24*30)=(60*60*24*365)){
return parseInt(t/(60*60*24*365))+"年前";
}
}
var str = friendlyDate( '2017-06-03 10:30:00' );
console.log(str);// 30分钟前,写完这题的时间是:2017-06-03 11:00:00
var str2 = friendlyDate('2017-06-01 00:00:00');
console.log(str2); //2天前
var str1=friendlyDate('2017-06-03 11:02:40');
console.log(str1);//刚刚
var str3=friendlyDate('2017-05-01 00:00:00');
console.log(str3);//1个月前
var str4=friendlyDate('2014-05-01 00:00:00');
console.log(str4);//3年前