JS Math | 數(shù)組 | Date

Math任務

1. 寫一個函數(shù),返回從min到max之間的隨機整數(shù)譬挚,包括min不包括max

function getRandomInt(min,max){
    return Math.floor(Math.random() * (max - min)) + min;
}

2. 寫一個函數(shù)锅铅,返回從min都max之間的隨機整數(shù),包括min包括max

function getRandomInt(min,max){
    return Math.floor(Math.random() * (max - min + 1)) + min;
}

3. 寫一個函數(shù)减宣,生成一個長度為 n 的隨機字符串盐须,字符串字符的取值范圍包括0到9,a到 z漆腌,A到Z丰歌。

function getRandStr(len){
    var disc = "0123456789abcdefghijklmnopqrstuvwsyzABCDERGHIJKLMNOPQRSTUVWSYZ";
    var ri,str;
    for(var i = 0; i<len; i++){
         ri = Math.floor(Math.random() * (disc.length + 1));
         if(!str) {
             str = disc[ri];
         } else {
         str += disc[ri];
        }
    }  
    return str;
}
var str = getRandStr(10); // 0a3iJiRZap

4. 寫一個函數(shù),生成一個隨機 IP 地址屉凯,一個合法的 IP 地址為 0.0.0.0~255.255.255.255

function getRandIP(){
  var arr = [],ri = 0;
  for(var i = 0; i<4; i++){
     ri = Math.floor(Math.random() * 256);
     arr[i] = ri;
  }
  return  arr.join(".");
}
var ip = getRandIP()
console.log(ip) // 10.234.121.45

5. 寫一個函數(shù)立帖,生成一個隨機顏色字符串,合法的顏色為#000000~ #ffffff

function getRandColor(){
    var disc = "0123456789abdcef",str="#",ri;
    for(var i = 0; i<6; i++){
         ri = Math.floor(Math.random() * disc.length);
         str += disc[ri];
    }  
    return str;
    
}
var color = getRandColor()
console.log(color)   // #3e2f1b

數(shù)組任務

1. 數(shù)組方法里push悠砚、pop晓勇、shift、unshift灌旧、join绑咱、splice分別是什么作用?用 splice函數(shù)分別實現(xiàn)push枢泰、pop描融、shift、unshift方法

  • push()方法用于將值添加進數(shù)組衡蚂,返回數(shù)組長度
  • pop()方法刪除數(shù)組最后一個元素窿克,返回被刪除的元素
  • shift()方法刪除數(shù)組第一個元素,返回被刪除的元素
  • unshift()方法在數(shù)組開頭添加一個或多個值毛甲,返回數(shù)組長度
  • join()方法以指定分隔符將數(shù)組的值鏈接成字符串年叮,返回生成的新字符串,()內接受指定分隔符參數(shù)玻募,若為空字符只损,則元素直接聯(lián)結成字符串
  • splice()方法,JavaScript提供了一個splice方法用于一次性解決數(shù)組添加七咧、刪除(這兩種方法一結合就可以達到替換效果)跃惫,方法有三個參數(shù)
  1. 開始索引

  2. 刪除元素的位移

  3. 插入的新元素,當然也可以寫多個

splice方法返回一個由刪除元素組成的新數(shù)組艾栋,沒有刪除則返回空數(shù)組

實現(xiàn)push方法:

function sp(arr,ele) {
    arr.splice(arr.length,0,ele);
    return arr.length;
}
var arr = [1,2,3];
var len = sp(arr,4);
console.log(arr);

實現(xiàn)pop方法:

function sPop(arr) {
     return arr.splice(-1,1)[0];
}
var arr = [1,2,3];
var result = sPop(arr);
console.log(arr);

實現(xiàn)shift方法:

function sShift(arr) {
     return arr.splice(0,1)[0];
}
var arr = [1,2,3];
var result = sShift(arr);
console.log(arr);

實現(xiàn)unshift方法:

function sUnshift(arr,ele) {
    var len = arguments.length;
    for(var i=1; i<len; i++) {
     arr.splice(0,0,arguments[i]);
    }
    return arr.length;
}
var arr = [1,2,3,4];
var result = sUnshift(arr,6,5,6,7);

2. 寫一個函數(shù)爆存,操作數(shù)組,數(shù)組中的每一項變?yōu)樵瓉淼钠椒焦粒谠瓟?shù)組上操作

function squareArr(arr){
    for(var i=0; i<arr.length; i++){
            arr.splice(i,1,arr[i] * arr[i]);
    }
}
var arr = [2, 4, 6]
squareArr(arr)
console.log(arr) // [4, 16, 36]

3. 寫一個函數(shù)终蒂,操作數(shù)組蜂林,返回一個新數(shù)組遥诉,新數(shù)組中只包含正數(shù)拇泣,原數(shù)組不變

function filterPositive(arr){
    var newArr = [];
    for(var i=0; i<arr.length; i++){
        if(typeof arr[i] === "number" && arr[i] >0){
           newArr.splice(newArr.length,0,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. 寫一個函數(shù)getChIntv,獲取從當前時間到指定日期的間隔時間

function getChIntv(timeStr){
     var timeEnd = new Date(timeStr).getTime();
     var timeStart = new Date().getTime();
     var taktTime = timeEnd - timeStart;
     var day = parseInt(taktTime / (1000*60*60*24));
     var hours = parseInt(taktTime % (1000*60*60*24) / (1000*60*60));
     var minute = parseInt(taktTime % (1000*60*60*24) % (1000*60*60) / (1000*60));
     var second = parseInt(taktTime % (1000*60*60*24) % (1000*60*60) % (1000*60) / 1000);
     var result = "距離" + timeStr + "還有" + day + "天" + hours + "小時"  + minute + "分" + second + "秒";
return result;
}
var str = getChIntv("2017-05-08");
console.log(str);  // 距除夕還有 20 天 15 小時 20 分 10 秒

2. 把hh-mm-dd格式數(shù)字日期改成中文日期

function getChsDate(timeStr) {
        var arrDate = timeStr.split('-'),
        yearStr = arrDate[0],
        monthStr = arrDate[1],
        dayStr = arrDate[2],
        disc = ["零","一","二","三","四","五","六","七","八","九","十","十一","十二","十三","十四","十五","十六","十七","十八","十九","二十","二十一","二十二","二十三","二十四","二十五","二十六","二十七","二十八","二十九","三十","三十一"];
        var ChsDate;
        for(var i=0; i<4; i++){
             if(!ChsDate){
                  ChsDate = disc[yearStr[i]];
                }else {
                  ChsDate += disc[yearStr[i]];
             }
        }
       ChsDate += "年" + disc[parseInt(monthStr)]  + "月" + disc[parseInt(dayStr)] + "日";
       return ChsDate;
}
var str = getChsDate('2015-01-08');
console.log(str);  // 二零一五年一月八日

3. 寫一個函數(shù)矮锈,參數(shù)為時間對象毫秒數(shù)的字符串格式霉翔,返回值為字符串。假設參數(shù)為時間對象毫秒數(shù)t苞笨,根據(jù)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 timeEnd = Date.now(),
    minute = 1000*60,
    hour = 1000*60*60,
    day = 1000*60*60*24,
    month = 1000*60*60*24*30,
    year = 1000*60*60*24*365,
    timeInt = timeEnd - time;
    if(timeInt < minute) {
         return "剛剛";
    } else if((timeInt >= minute) && (timeInt < hour) ) {
        return "3分鐘前";
    } else if((timeInt >= hour) && (timeInt < day)) {
        return "8小時前";
    } else if((timeInt >= day) && (timeInt < month)) {
        return "3天前";
    } else if((timeInt >= month) && (timeInt < year)) {
        return "2個月前";
    } else if(timeInt >= year) {
        return "8年前";
    }
}
var str = friendlyDate( '1484286699422' ) //  1分鐘前
var str2 = friendlyDate('1483941245793') //4天前
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末序芦,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子粤咪,更是在濱河造成了極大的恐慌谚中,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寥枝,死亡現(xiàn)場離奇詭異宪塔,居然都是意外死亡,警方通過查閱死者的電腦和手機囊拜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進店門某筐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人冠跷,你說我怎么就攤上這事南誊。” “怎么了蜜托?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵弟疆,是天一觀的道長。 經常有香客問我盗冷,道長怠苔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任仪糖,我火速辦了婚禮柑司,結果婚禮上,老公的妹妹穿的比我還像新娘锅劝。我一直安慰自己攒驰,他們只是感情好,可當我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布故爵。 她就那樣靜靜地躺著玻粪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上劲室,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天伦仍,我揣著相機與錄音,去河邊找鬼很洋。 笑死充蓝,一個胖子當著我的面吹牛,可吹牛的內容都是我干的喉磁。 我是一名探鬼主播谓苟,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼协怒!你這毒婦竟也來了涝焙?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤孕暇,失蹤者是張志新(化名)和其女友劉穎仑撞,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芭商,經...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡派草,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了铛楣。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片近迁。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖簸州,靈堂內的尸體忽然破棺而出鉴竭,到底是詐尸還是另有隱情,我是刑警寧澤岸浑,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布搏存,位于F島的核電站,受9級特大地震影響矢洲,放射性物質發(fā)生泄漏璧眠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一读虏、第九天 我趴在偏房一處隱蔽的房頂上張望责静。 院中可真熱鬧,春花似錦盖桥、人聲如沸灾螃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽腰鬼。三九已至嵌赠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間熄赡,已是汗流浹背姜挺。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留本谜,地道東北人初家。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓偎窘,卻偏偏與公主長得像乌助,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子陌知,可洞房花燭夜當晚...
    茶點故事閱讀 43,494評論 2 348

推薦閱讀更多精彩內容

  • Math 1.寫一個函數(shù)他托,返回從min到max之間的 隨機整數(shù),包括min不包括max 2.寫一個函數(shù)仆葡,返回從mi...
    饑人谷_bigJiao閱讀 552評論 0 0
  • 第5章 引用類型(返回首頁) 本章內容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,216評論 0 4
  • 第三章 類型赏参、值和變量 1、存取字符串沿盅、數(shù)字或布爾值的屬性時創(chuàng)建的臨時對象稱做包裝對象把篓,它只是偶爾用來區(qū)分字符串值...
    坤少卡卡閱讀 628評論 0 1
  • php usleep() 函數(shù)延遲代碼執(zhí)行若干微秒。 unpack() 函數(shù)從二進制字符串對數(shù)據(jù)進行解包腰涧。 uni...
    思夢PHP閱讀 1,983評論 1 24
  • 最近上班的這兩天事和作息都亂套了韧掩。有看書不夠半小時,下班后回到去不是準備睡窖铡,而是打游戲打到二三點疗锐,運動也是只做仰臥...
    承思而行閱讀 116評論 0 0