Math任務(wù)
1卖子、寫一個(gè)函數(shù)略号,返回從min到max之間的隨機(jī)整數(shù),包括min不包括max
function getMin(min,max){
return Math.floor(Math.random()*(max-min)+min)
}
//檢測隨機(jī)出現(xiàn)概率是否平均
function getMin(min,max){
var dist = {};
for(var i = 0 ;i<10000;i++){
var key = Math.floor(Math.random()*(max-min)+min)
if(dist[key]){
dist[key]++
}else{
dist[key]=1
}
}
console.log(dist); //{ '6': 2513, '7': 2502, '8': 2468, '9': 2517 }
}
*/
console.log(getMin(6,10))
2洋闽、寫一個(gè)函數(shù)玄柠,返回從min都max之間的隨機(jī)整數(shù),不包括min包括max
function getMax(min,max){
return Math.floor(Math.random()*(max-min)+min+1)
}
console.log(getMax(6,10))
3诫舅、寫一個(gè)函數(shù)羽利,生成一個(gè)長度為 n 的隨機(jī)字符串,字符串字符的取值范圍包括0到9刊懈,a到 z这弧,A到Z。
function getRandStr(len){
//補(bǔ)全函數(shù)
var dist = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFJHIGKLMNOPQRSTUVWXYZ';
var newStr = [];
for (var i = 0;i<len;i++){
var idx = Math.floor(Math.random()*62); //隨機(jī)獲取一個(gè)字符串dist的下標(biāo)
newStr[i]=dist[idx] //把獲取的下標(biāo)對應(yīng)的字符加入newStr中
}
return newStr.join('') //str.join()合并字符串虚汛,返回結(jié)果
}
var str = getRandStr(10);
console.log(str) // 0a3iJiRZap
4匾浪、寫一個(gè)函數(shù),生成一個(gè)隨機(jī) IP 地址卷哩,一個(gè)合法的 IP 地址為 0.0.0.0~255.255.255.255
function getRandIP(){
//補(bǔ)全
var str = [];
for (var i =0;i<4;i++){ //循環(huán)4遍獲取4個(gè)數(shù)字
var num=Math.floor(Math.random()*256) //隨機(jī)獲取一個(gè)數(shù)字
str[i]=num //把遍歷的四個(gè)數(shù)字加入str數(shù)組
}
return str.join('.') //使用符號.連接
}
var ip = getRandIP()
console.log(ip) // 10.234.121.45
5蛋辈、寫一個(gè)函數(shù),生成一個(gè)隨機(jī)顏色字符串将谊,合法的顏色為#000000~ #ffffff
function getRandColor(){
var dist = '0123456789abcdef'
var str = ['#']
for (var i =1;i<7;i++){
var idx = Math.floor(Math.random()*16)
str[i]=dist[idx]
}
return str.join('')
}
var color = getRandColor()
console.log(color) // #3e2f1b
數(shù)組任務(wù)
1.1梯浪、數(shù)組方法里push、pop瓢娜、shift、unshift礼预、join眠砾、split分別是什么作用?
| API | 作用 |
| ------------- |:-------------:| -----:|
| arr.push(100) | 把100加入數(shù)組 |
| arr.pop(100) | 把數(shù)組中的100拿出來托酸,只拿一個(gè) |
| arr.shift() | 刪除數(shù)組的第一位 |
| arr.unshift(100) | 在數(shù)組的第一位加入100 |
| arr.join(‘’) | 使用括號中的內(nèi)容拼接數(shù)組 |
| arr.splice(start,length,c) | start指起始位褒颈,length指替換的長度,c指替換的東西励堡,若沒有替換則為刪除谷丸,增加是在start前面的 |
| arr.slice(start,end) | 返回一個(gè)新數(shù)組(返回原數(shù)組的一個(gè)片段,包含start应结,不含end刨疼,當(dāng)start比end大時(shí)返回空數(shù)組)|
| arr.concat(arr2) | 拼接兩個(gè)數(shù)組形成新數(shù)組泉唁,對原數(shù)組沒有影響 |
| arr.reverse() | 反轉(zhuǎn)數(shù)組 |
| arr.sort() | 對數(shù)字排序,按字符串排序 |
1.2用 splice函數(shù)分別實(shí)現(xiàn)push揩慕、pop亭畜、shift、unshift方法
var arr = [2,6,8,3,56]
//arr.push(100) 在數(shù)組中加入一個(gè)數(shù)字
arr.splice(5,0,100) //[2, 6, 8, 3, 56, 100]
//arr.pop(100) 在數(shù)組中去除一個(gè)數(shù)字
arr.splice(5,1) //[2, 6, 8, 3, 56]
//arr.shift() 去除數(shù)組開頭第一個(gè)數(shù)字
arr.splice(0,1) //[6, 8, 3, 56]
//arr.unshift(100) 在數(shù)組開頭加入一個(gè)數(shù)字
arr.splice(0,0,100) //[100, 6, 8, 3, 56]
2迎卤、寫一個(gè)函數(shù)拴鸵,操作數(shù)組,數(shù)組中的每一項(xiàng)變?yōu)樵瓉淼钠椒轿仙Γ谠瓟?shù)組上操作
function squareArr(arr){
for(var i = 0;i<arr.length;i++){ //循環(huán)arr的下標(biāo)
var num = Math.pow(arr[i],2) //對arr的每一位數(shù)字平方得出一個(gè)新數(shù)字
arr.splice(i,1,num) //替換原數(shù)組
}
return arr //返回新數(shù)組結(jié)果
}
var arr = [2, 4, 6]
squareArr(arr)
console.log(arr) // [4, 16, 36]
3劲藐、寫一個(gè)函數(shù),操作數(shù)組樟凄,返回一個(gè)新數(shù)組聘芜,新數(shù)組中只包含正數(shù),原數(shù)組不變
function filterPositive(arr){
var newArr = []
for(var i =0 ;i<arr.length; i++){
if(arr[i]>0 && arr[i] !== true){
newArr.push(arr[i]) //若原數(shù)組中符合正數(shù)條件即加入新數(shù)組
}
}
return(newArr)
}
var arr = [3, -1, 2, '饑人谷', true]
var newArr = filterPositive(arr)
console.log(newArr) //[3, 2]
Date 任務(wù)
new Date().getTime(); //獲取毫秒數(shù)1489664298340
new Date(1489664298340) //毫秒數(shù)轉(zhuǎn)換為時(shí)間
1不同、 寫一個(gè)函數(shù)getChIntv厉膀,獲取從當(dāng)前時(shí)間到指定日期的間隔時(shí)間
function getChIntv(time){
var timeEnd = new Date(time).getTime(); //獲取指定時(shí)間距離1970年1月1日0點(diǎn)的毫秒數(shù)
var timeStart = new Date().getTime(); //獲取當(dāng)前時(shí)間距離1970年1月1日0點(diǎn)的毫秒數(shù)
var offsetTime = timeEnd - timeStart; //相減得到兩個(gè)時(shí)間間相差的毫秒數(shù)
var days = parseInt(offsetTime/(1000*60*60*24)) //1000毫秒*60秒*60分*24小時(shí)=1天,取整數(shù)為天數(shù)
var hours = parseInt(offsetTime % (1000*60*60*24) /(1000*60*60)) //取余數(shù)為剩余的毫秒數(shù)二拐,再除以1000毫秒*60秒*60分服鹅,取整數(shù)為小時(shí)數(shù)
var minutes = parseInt(offsetTime % (1000*60*60*24) % (1000*60*60) /(1000*60))
var seconds = parseInt(offsetTime % (1000*60*60*24) % (1000*60*60) % (1000*60) / 1000)
var str = '距除夕還有'+ days +'天'+ hours + '小時(shí)' + minutes + '分'+ seconds +'秒'
return str
}
var str = getChIntv("2018-03-16");
console.log(str); // 距除夕還有364天13小時(shí)22分17秒
2、把hh-mm-dd格式數(shù)字日期改成中文日期
function getChsDate(timeStr){
var dist = ['零','一','二','三','四','五','六','七','八','九','十','十一','十二','十三','十四','十五','十六','十七','十八','十九','二十','二十一','二十二','二十三','二十四','二十五','二十六','二十七','二十八','二十九','三十','三十一']
var arr = timeStr.split('-') //["2015", "01", "08"]
var year = arr[0] // "2015"
var month = arr[1] // "01"
var day = arr[2] // "08"
var chYear = dist[parseInt(year[0])] + dist[parseInt(year[1])] + dist[parseInt(year[2])] + dist[parseInt(year[3])]
var chMonth = dist[parseInt(month)]
var chDay = dist[parseInt(day)]
return chYear + '年' + chMonth + '月' + chDay + '日'
}
var str = getChsDate('2017-3-16');
console.log(str); //二零一七年三月十六日
3百新、寫一個(gè)函數(shù)企软,參數(shù)為時(shí)間對象毫秒數(shù)的字符串格式,返回值為字符串饭望。假設(shè)參數(shù)為時(shí)間對象毫秒數(shù)t仗哨,根據(jù)t的時(shí)間分別返回如下字符串:
- 剛剛( t 距當(dāng)前時(shí)間不到1分鐘時(shí)間間隔)
- 3分鐘前 (t距當(dāng)前時(shí)間大于等于1分鐘,小于1小時(shí))
- 8小時(shí)前 (t 距離當(dāng)前時(shí)間大于等于1小時(shí)铅辞,小于24小時(shí))
- 3天前 (t 距離當(dāng)前時(shí)間大于等于24小時(shí)厌漂,小于30天)
- 2個(gè)月前 (t 距離當(dāng)前時(shí)間大于等于30天小于12個(gè)月)
- 8年前 (t 距離當(dāng)前時(shí)間大于等于12個(gè)月)
function friendlyDate(time){
var timeNow = new Date().getTime(); //獲取當(dāng)前時(shí)間毫秒數(shù)
var offsetTime = timeNow - time; //獲取參數(shù)時(shí)間 和 當(dāng)前時(shí)間的 毫秒差值
if(offsetTime < (1000*60*60)){
console.log('剛剛')
}else if( 1000*60*60 <= offsetTime < 1000*60*60*60 ){
console.log('3分鐘前')
}else if( 1000*60*60*60 <= offsetTime < 1000*60*60*60*24 ){
console.log('8小時(shí)前')
}else if( 1000*60*60*60*24 <= offsetTime < 1000*60*60*60*24*30 ){
console.log('三天前')
}else if( 1000*60*60*60*24*30 <= offsetTime < 1000*60*60*60*24*30*12 ){
console.log('2個(gè)月前')
}else if( 1000*60*60*60*24*30*12 <= offsetTime ){
console.log('8年前')
}
}
var str = friendlyDate( '1489665777862' ) // 剛剛
var str2 = friendlyDate('1483941245793') // 3分鐘前