Math/Data/Array

  • 關(guān)鍵詞:Math對(duì)象、Data對(duì)象仗考、數(shù)組Array

一音同、Math任務(wù)

1. 編寫(xiě)函數(shù),功能:返回從min到max之間的隨機(jī)整數(shù)秃嗜,包括min不包括max

  • 代碼如下
function getRandomInt(min, max) {
  return Math.floor(Math.random() * (max - min)) + min;
}
  • 備注說(shuō)明
Math.random()  // 返回一個(gè)從0到1之間的偽隨機(jī)數(shù):可以等于0权均,一定小于1
Math.floor()  // 返回小于或等于參數(shù)的最大整數(shù)
Math.random() * (max - min)  // 最小值為 0 ,最大值無(wú)限接近 差值 -1
Math.floor(Math.random() * (max - min))  // 最小值為 0锅锨,最大值為 差值 -1
Math.floor(Math.random() * (max - min)) + min  // 最小值為 min叽赊,最大值為 max-1

2. 編寫(xiě)函數(shù),功能:返回從min都max之間的隨機(jī)整數(shù)必搞,包括min包括max

  • 代碼如下
function getRandomInt(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}
  • 備注說(shuō)明
Math.random() * (max - min + 1)  // 最小值為 0 必指,最大值無(wú)限接近 差值 +1
Math.floor(Math.random() * (max - min + 1))  // 最小值為 0,最大值為 差值
Math.floor(Math.random() * (max - min + 1)) + min  // 最小值為 min恕洲,最大值為 max

3. 編寫(xiě)函數(shù)塔橡,功能:生成一個(gè)長(zhǎng)度為 n 的隨機(jī)字符串,字符串字符的取值范圍包括0到9研侣,a到 z谱邪,A到Z

  • 思路
// 1. 字符串可以通過(guò)類(lèi)數(shù)組下標(biāo)的方法進(jìn)行訪問(wèn)
// 2. 類(lèi)數(shù)組下標(biāo)可以通過(guò) Math.random() 隨機(jī)生成
// 3. 建立一個(gè)字典和一個(gè)空字符串,從字典中隨機(jī)篩選字符放入空字符串中
// 4. 利用循環(huán)控制所要字符串的長(zhǎng)度
// 5. 注意取值范圍和要求
  • 代碼如下
function getRandStr(len){ 
//補(bǔ)全函數(shù)
    var disc = '1234567890abcdefjhigklmnopqrstuvwxyzABCDEFJHIGKLMNOPQRSTUVWXYZ'
    var str = ''
    for(var i = 0; i < len; i++){
        str += disc[Math.floor(Math.random() * 62)]  
        // (62+1)會(huì)出現(xiàn)undefined庶诡,原因 disc 共有62位,但第62位的下標(biāo)是disc[61]咆课,第1位的下標(biāo)是disc[0]【注意位數(shù)與下標(biāo)的關(guān)系:下標(biāo) = 位數(shù) - 1】
    }
    return str
}
var result = getRandStr(15)
console.log(result)  // mcwNMWGbbEmwodq
console.log(result.length)  // 15

4. 編寫(xiě)函數(shù)末誓,功能:生成一個(gè)隨機(jī) IP 地址扯俱,一個(gè)合法的 IP 地址為 0.0.0.0~255.255.255.255

  • 思路
// 直接循環(huán)、隨機(jī)生成4個(gè)數(shù)字喇澡,使用連接符連接4個(gè)數(shù)字
// 第一將循環(huán)結(jié)果push到數(shù)組中迅栅,第二將數(shù)組轉(zhuǎn)化為字符串
  • 代碼如下
function getRandIP(){
//函數(shù)補(bǔ)全
    var str = []
    for(var i = 0; i < 4; i++){
        str.push(Math.floor(Math.random() * (255+1)))
    }
    var strIp = str.join('.')
    return strIp
}
var ip = getRandIP()
console.log(ip)  // 101.11.140.65

5. 編寫(xiě)函數(shù),功能:生成一個(gè)隨機(jī)顏色字符串晴玖,合法顏色為#000000~ #ffffff

  • 思路
// 制作字典读存,篩選字符
// 循環(huán) 6 次,每次生成 1 個(gè)字符呕屎,組裝顯示
  • 代碼如下
function getRandColor(){
    var disc = '1234567890abcdef'
    var str = ''
    for(var i = 0; i < 6; i++){
        str += disc[Math.floor(Math.random() * 16 )]
    }
    var show = '#' + str
    return show
}
var color = getRandColor()
console.log(color)  // #4a8e36

二让簿、數(shù)組任務(wù)

1.1 數(shù)組方法里push、pop秀睛、shift尔当、unshift、join蹂安、split分別是什么作用椭迎?

方法 作用
push 向數(shù)組的末尾添加一個(gè)或多個(gè)元素,并返回新的長(zhǎng)度田盈,直接修改原數(shù)組
pop 刪除并返回?cái)?shù)組的最后一個(gè)元素畜号,數(shù)組長(zhǎng)度減 1,直接修改原數(shù)組
shift 刪除數(shù)組的第一個(gè)元素允瞧,并返回第一個(gè)元素的值弄兜,直接修改原數(shù)組
unshift 向數(shù)組的開(kāi)頭添加一個(gè)或更多元素,并返回新的長(zhǎng)度瓷式,直接修改原數(shù)組
join 把數(shù)組中的所有元素放入一個(gè)字符串中替饿,元素通過(guò)指定分隔符進(jìn)行分隔
split 把一個(gè)字符串分割成字符串?dāng)?shù)組,字符串通過(guò)指定點(diǎn)進(jìn)行分割
splice 向/從數(shù)組中添加/刪除項(xiàng)目贸典,然后返回被刪除的項(xiàng)目视卢,直接修改原數(shù)組

1.2 用 splice函數(shù)分別實(shí)現(xiàn) push、pop廊驼、shift据过、unshift方法

  • splice:向數(shù)組中添加元素,或從數(shù)組中刪除元素
語(yǔ)法:arrayObject.splice(index, howmany, item1,.....,itemX)
參數(shù)說(shuō)明:
 1. index:必填妒挎;整數(shù)绳锅;定義起始位置;若為負(fù)數(shù)酝掩,起始位置從尾部開(kāi)始計(jì)算
 2. howmany:必填鳞芙;需要?jiǎng)h除的元素?cái)?shù)量;若為 0,則不刪除任何元素
 3. itemX:選填原朝;向數(shù)組添加的新元素驯嘱;數(shù)量可為多個(gè)
  • 1.push:向數(shù)組末尾添加一個(gè)或多個(gè)元素【堆棧】
var arr1 = new Array(1,2,3,4,5)
arr1.splice(arr.length, 0, 6)
console.log(arr1)  // [1, 2, 3, 4, 5, 6]
  • 2.pop:刪除數(shù)組末尾最后一個(gè)元素【堆椩梗】
var arr2 = new Array(1,2,3,4,5)
arr2.splice(arr.length-1, 1)
console.log(arr2)  // [1, 2, 3, 4]
  • 3.shift:刪除數(shù)組開(kāi)頭第一個(gè)元素【隊(duì)列】
var arr3 = new Array(1,2,3,4,5)
arr3.splice(0, 1)
console.log(arr3)  // [2, 3, 4, 5]
  • 4.unshift:向數(shù)組開(kāi)頭添加一個(gè)或多個(gè)元素【隊(duì)列】
var arr4 = new Array(1,2,3,4,5)
arr4.splice(0, 0, 0)
console.log(arr4)  // [0, 1, 2, 3, 4, 5]

2. 編寫(xiě)函數(shù)鞠评,功能:操作數(shù)組,數(shù)組中的每一項(xiàng)變?yōu)樵瓉?lái)的平方壕鹉,操作原數(shù)組

  • 思路
// 遍歷數(shù)組 { 計(jì)算平方 }
// 循環(huán)時(shí):將平方結(jié)果賦值替換原數(shù)組元素 —— 使用數(shù)組下標(biāo)
  • 代碼如下
function squareArr(arr){
    // 函數(shù)補(bǔ)全
    for(var i = 0; i < arr.length; i++){
      arr[i] = Math.pow(arr[i], 2)  
      // arr[i] = arr[i] * arr[i]   // 指定每一項(xiàng)的保存位置
    }
    return arr
}
var arr = [2, 4, 6]
squareArr(arr)
console.log(arr) // [4, 16, 36]

3. 編寫(xiě)函數(shù)剃幌,功能:操作數(shù)組,返回一個(gè)新數(shù)組晾浴,新數(shù)組中只包含正數(shù)负乡,原數(shù)組不變

  • 思路
// 遍歷數(shù)組 { 條件判斷 }
// 聲明新空數(shù)組保存值,最終return值
  • 代碼如下
function filterPositive(arr){
    //函數(shù)補(bǔ)全
    var emptyArr = []
    for(var i = 0; i < arr.length; i++){
      if( typeof arr[i] === 'number' && arr[i] > 0){  // 只需要數(shù)字怠肋,且是正數(shù)
        emptyArr.push( arr[i] )  // .push 將 參數(shù) 添加到 指定數(shù)組中(emptyArr)
      }
    }
    return emptyArr
}
var arr = [3, -1,  2,  '饑人谷', true]
var newArr = filterPositive(arr)
console.log(arr)  // [3, -1, 2, '饑人谷', true]
console.log(newArr)  // [3, 2]

三敬鬓、Date 任務(wù)

1. 編寫(xiě)函數(shù)getChIntv,獲取從當(dāng)前時(shí)間到指定日期的間隔時(shí)間

  • 思路
// 1. 分別獲取當(dāng)前時(shí)間笙各、指定時(shí)間钉答,并計(jì)算差值
// 2. 轉(zhuǎn)換差值顯示格式:毫秒數(shù)轉(zhuǎn)換為指定格式
// 3. 以北京時(shí)間 0 為基準(zhǔn)
  • 代碼如下
function getChIntv(time){
    var endLine = Date.parse(time)            // 1.傳遞指定時(shí)間
    var startLine = Date.now()                // 2.獲取當(dāng)前時(shí)間
    var interval = endLine - startLine        // 3.計(jì)算時(shí)間間隔(可使用Math.abs())
    var secondsAll = parseInt(interval/1000)  // 4.全部秒數(shù)(需要整數(shù)進(jìn)行計(jì)算)
    var seconds = secondsAll % 60             // 5.換算秒數(shù)
    var minutesAll = parseInt(secondsAll/60)  // 6.全部分鐘數(shù)
    var minutes = minutesAll % 60             // 7.換算分鐘數(shù)
    var hoursAll = parseInt(minutesAll/60)    // 8.全部小時(shí)數(shù)
    var hours = hoursAll % 24                 // 9.換算小時(shí)數(shù)
    var daysAll = parseInt(hoursAll/24)       //10.全部天數(shù)
    var str = ''
    return var str = '距除夕還有 ' + Math.abs(daysAll) + ' 天 ' + Math.abs(hours-8) + ' 時(shí) ' + Math.abs(minutes) + ' 分 ' + Math.abs(seconds) + ' 秒'
}
var str = getChIntv("2017-01-27");
console.log(str);  // 距除夕還有 10 天 6 時(shí) 30 分 6 秒
  • 記錄 /已過(guò)去/ 或 /未到來(lái)/ 的某個(gè)重要日子
// 根據(jù)條件顯示不同提示:替換上面 return 語(yǔ)句
if((endLine - startLine) > 0){            
    return str = '距 ' + time + ' 還剩下 ' + Math.abs(daysAll) + ' 天 ' + Math.abs(hours-8) + ' 時(shí) ' + Math.abs(minutes) + ' 分 ' + Math.abs(seconds) + ' 秒'
}else {
    return str = '距 ' + time + ' 已過(guò)去 ' + Math.abs(daysAll+1) + ' 天 ' + Math.abs(hours-8) + ' 時(shí) ' + Math.abs(minutes) + ' 分 ' + Math.abs(seconds) + ' 秒'
}
  • 題外話
UTC 和 GMT 都是世界標(biāo)準(zhǔn)時(shí)間, 兩者差距很需厩馈:UTC = GMT +/- 0.9 s 
北京時(shí)間比UTC時(shí)間早8小時(shí)数尿,例如:UTC時(shí)間是2017年1月1日0點(diǎn)整,北京時(shí)間是2017年1月1日早8點(diǎn)整

2. 編寫(xiě)函數(shù)getChsDate惶楼,功能:轉(zhuǎn)換日期格式右蹦,把hh-mm-dd格式數(shù)字日期改成中文日期

  • 思路
 1. 定義數(shù)組字典
 2. 利用數(shù)組下標(biāo)篩選字典元素
 3. 字典種類(lèi):字符串、數(shù)組歼捐;
     字符串中每一個(gè)字對(duì)應(yīng)一個(gè)下標(biāo)何陆;數(shù)組中每一個(gè)元素對(duì)應(yīng)一個(gè)下標(biāo)
     字符串字典只有0~10準(zhǔn)確;數(shù)組字典任意數(shù)字都比較精確
  • 代碼如下
function getChsDate(date){
    var arr = date.split('-')
    var disc = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二', '十三', '十四', '十五', '十六', '十七', '十八', '十九', '二十', '二十一', '二十二', '二十三', '二十四', '二十五', '二十六', '二十七', '二十八', '二十九', '三十', '三十一']
    var year = ''
    for(var i = 0; i < arr[0].length; i++){
        year += disc[arr[0][i]]
    }
    var month = disc[parseInt(arr[1])]  // 需要轉(zhuǎn)換為整數(shù)
    var day = disc[parseInt(arr[2])]
    var result = ''
    return result = year + '年' + month + '月' + day + '日'
}
var str = getChsDate('2015-01-08');
console.log(str);  // 二零一五年一月八日

3. 編寫(xiě)函數(shù)豹储,功能:按參數(shù)條件返回字符串

  • 參數(shù)為時(shí)間對(duì)象毫秒數(shù)的字符串格式贷盲,返回值為字符串。
假設(shè)參數(shù)為時(shí)間對(duì)象毫秒數(shù) t剥扣,根據(jù) t 的時(shí)間分別返回如下字符串:
 1. 剛剛( t 距當(dāng)前時(shí)間不到1分鐘時(shí)間間隔)
 2. 3分鐘前 (t距當(dāng)前時(shí)間大于等于1分鐘巩剖,小于1小時(shí))
 3. 8小時(shí)前 (t 距離當(dāng)前時(shí)間大于等于1小時(shí),小于24小時(shí))
 4. 3天前 (t 距離當(dāng)前時(shí)間大于等于24小時(shí)钠怯,小于30天)
 5. 2個(gè)月前 (t 距離當(dāng)前時(shí)間大于等于30天小于12個(gè)月)
 6. 8年前 (t 距離當(dāng)前時(shí)間大于等于12個(gè)月)
  • 思路
 1. 轉(zhuǎn)換參數(shù)(毫秒數(shù))為秒數(shù)佳魔、分鐘數(shù)寿羞、小時(shí)數(shù)愕宋、天數(shù)
 2. 加入條件判斷供屉,根據(jù)條件返回相應(yīng)字符串
 3. 判斷這個(gè)差值符合哪個(gè)條件渡讼,就返回哪個(gè)字符串
  • 代碼
function friendlyDate(time){
    var stare = Date.now()
    secondsAll = Math.abs(stare - time) / 1000
    if(secondsAll < 60){  // 秒數(shù)试溯;條件判斷使用向上乘法更好一些拜姿,不用轉(zhuǎn)換整數(shù)
        return '剛剛'
    }else if(parseInt(secondsAll/60) >= 1 && parseInt(secondsAll/60) < 60){  // 分鐘數(shù)
        return '3分鐘前'
    }else if(parseInt(secondsAll/60/60) >= 1 && parseInt(secondsAll/60/60) < 24){  // 小時(shí)數(shù)
        return '8小時(shí)前'
    }else if(parseInt(secondsAll/60/60/24) >= 1 && parseInt(secondsAll/60/60/24) < 30){  // 天數(shù)
        return '3天前'
    }else if(parseInt(secondsAll/60/60/24/30) >= 1 && parseInt(secondsAll/60/60/24/30) < 12){  // 月數(shù)
        return '2個(gè)月前'
    }else if(parseInt(secondsAll/60/60/24/30/12) >= 1){  // 年數(shù)
        return '8年前'
    }
}
var time = Date.parse('2017-01-01')
var str = friendlyDate(time)
console.log(str)  // 3天前

本文章著作權(quán)歸饑人谷和作者所有寸莫,轉(zhuǎn)載須說(shuō)明來(lái)源尖滚!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末并思,一起剝皮案震驚了整個(gè)濱河市庐氮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌宋彼,老刑警劉巖弄砍,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異输涕,居然都是意外死亡音婶,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)莱坎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)衣式,“玉大人,你說(shuō)我怎么就攤上這事檐什〔晡裕” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵乃正,是天一觀的道長(zhǎng)住册。 經(jīng)常有香客問(wèn)我,道長(zhǎng)瓮具,這世上最難降的妖魔是什么荧飞? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮名党,結(jié)果婚禮上叹阔,老公的妹妹穿的比我還像新娘。我一直安慰自己传睹,他們只是感情好耳幢,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著蒋歌,像睡著了一般帅掘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上堂油,一...
    開(kāi)封第一講書(shū)人閱讀 50,084評(píng)論 1 291
  • 那天修档,我揣著相機(jī)與錄音,去河邊找鬼府框。 笑死吱窝,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播院峡,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼兴使,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了照激?” 一聲冷哼從身側(cè)響起发魄,我...
    開(kāi)封第一講書(shū)人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎俩垃,沒(méi)想到半個(gè)月后励幼,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡口柳,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年苹粟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片跃闹。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡嵌削,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出望艺,到底是詐尸還是另有隱情苛秕,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布荣茫,位于F島的核電站想帅,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏啡莉。R本人自食惡果不足惜港准,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望咧欣。 院中可真熱鬧浅缸,春花似錦、人聲如沸魄咕。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)哮兰。三九已至毛萌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間喝滞,已是汗流浹背阁将。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留右遭,地道東北人做盅。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓缤削,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親吹榴。 傳聞我的和親對(duì)象是個(gè)殘疾皇子亭敢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問(wèn)題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,740評(píng)論 0 33
  • .寫(xiě)一個(gè)函數(shù)图筹,返回從min到max之間的 隨機(jī)整數(shù)帅刀,包括min不包括max function randomness...
    邢烽朔閱讀 313評(píng)論 0 1
  • Math任務(wù) 1、寫(xiě)一個(gè)函數(shù)婿斥,返回從min到max之間的 隨機(jī)整數(shù)劝篷,包括min不包括max function ge...
    saintkl閱讀 289評(píng)論 0 0
  • 參考 Math任務(wù) 1活鹰、寫(xiě)一個(gè)函數(shù),返回從min到max之間的 隨機(jī)整數(shù)只估,包括min不包括max// Math....
    怎么昵稱(chēng)閱讀 229評(píng)論 0 0
  • Math任務(wù) 1志群、寫(xiě)一個(gè)函數(shù),返回從min到max之間的隨機(jī)整數(shù)蛔钙,包括min不包括max
    湖衣閱讀 262評(píng)論 0 0