【Javascript】ES5數(shù)組、字符串末购、Date


寫一個(gè)隨機(jī)整數(shù)函數(shù)

返回從min到max之間的 隨機(jī)整數(shù)破喻,包括min不包括max

// 方法1 使用Math.floor()
function getRandomInt1(max, min){
  return Math.floor(Math.random()*(max - min)) + min
}
// 方法2 使用Math.ceil()
function getRandomInt2(max, min){
  return Math.ceil(Math.random()*(max - min)) + (min - 1)
}

寫一個(gè)隨機(jī)字符串函數(shù)

生成一個(gè)長度為 n 的隨機(jī)字符串,字符串字符的取值范圍包括0到9盟榴,a到 z曹质,A到Z。

function getRandStr(len){
  var str = '' // 聲明需要的是一個(gè)字符串
  var dict = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' // 聲明字符串的取值范圍
  for(var i = 0; i < len; i++){ // 使用for循環(huán)來執(zhí)行多次范圍取值
    var x= Math.floor(Math.random()*dict.length) // 從字符串取值范圍中擎场,隨機(jī)出一個(gè)下標(biāo)數(shù)作為本次取到的值
    str = str + dict[x] // 將本次取到的值和元字符串做運(yùn)算拼接字符串
  }
  return str // 返回循環(huán)結(jié)束后的字符串
}
getRandStr(x); // 填寫需要的字符串長度以驗(yàn)證函數(shù)正確性

寫一個(gè)隨機(jī) IP 地址函數(shù)

生成一個(gè)隨機(jī) IP 地址羽德,一個(gè)合法的 IP 地址為 0.0.0.0~255.255.255.255

function getRandIP(ip){
  var arr = [] // 聲明儲(chǔ)存IP地址的對(duì)象是個(gè)數(shù)組
  for(var i = 0; i < 4; i++){ // 使用for循環(huán)來取4次值
    var x = Math.floor(Math.random()*256) //使用floor方法,將0-255的隨機(jī)整數(shù)賦值給x
    arr.unshift(x) // 在ip數(shù)組中添加剛?cè)〉降碾S機(jī)值
  }
  return arr // 返回循環(huán)結(jié)束后的arr數(shù)組
}
var ip = getRandIP() // 將函數(shù)執(zhí)行完畢的數(shù)組賦值給ip
console.log(ip.join('.')) // 使用join方法將數(shù)組以'.'連接并輸出

寫一個(gè)隨機(jī)顏色字符串函數(shù)

生成一個(gè)隨機(jī)顏色字符串迅办,合法的顏色為#000000~ #ffffff

function getRandColor(){
  var str = '#' // // 聲明需要的是一個(gè)字符串
  var dict = '0123456789abcdef' // 聲明字符串的取值范圍是十六進(jìn)制數(shù)
  for(var i = 0; i < 6; i++){ // 使用for循環(huán)來執(zhí)行6范圍取值
    var x= Math.floor(Math.random()*dict.length) // 從字符串取值范圍中宅静,隨機(jī)出一個(gè)下標(biāo)數(shù)作為本次取到的值
    str = str + dict[x] // 將本次取到的值和元字符串做運(yùn)算拼接字符串
  }
    return str // 返回循環(huán)結(jié)束后的字符串
}
var color = getRandColor() // 將函數(shù)執(zhí)行完畢的數(shù)組賦值給ip
console.log(color) // 輸出'#'之后的留個(gè)隨機(jī)十六進(jìn)制數(shù)

實(shí)現(xiàn)一個(gè)flatten函數(shù)

將一個(gè)嵌套多層的數(shù)組 array(數(shù)組) (嵌套可以是任何層數(shù))轉(zhuǎn)換為只有一層的數(shù)組,數(shù)組中元素僅基本類型的元素或數(shù)組站欺,不存在循環(huán)引用的情況姨夹。
看的有些懵逼纤垂,我等到視頻上傳后看看相關(guān)部分再做解答吧

eg:
flatten([1, [2], [3, [[4]]]]) => [1, 2, 3, 4];

實(shí)現(xiàn)一個(gè)reduce函數(shù)

作用和原生的reduce類似
reduce方法的作用是遍歷數(shù)組,調(diào)用回調(diào)函數(shù)匀伏,將數(shù)組元素組合成一個(gè)值

function likeReduce(arr, method, initValue){ // 聲明函數(shù)洒忧,并有3個(gè)參數(shù):初始數(shù)組、調(diào)用方法/函數(shù)够颠、初始值
  var tagArr = (initValue === undefined ? [] : [initValue]).concat(arr)
 //定義一個(gè)函數(shù)體內(nèi)的數(shù)組熙侍,并判斷是否有初始值,如果有則拼接履磨,沒有則為空數(shù)組
  while(tagArr.length > 1){
    tagArr.splice(0, 2, method(tagArr[0], tagArr[1])) 
// 數(shù)組長度>1時(shí)蛉抓,使用.splice方法,將數(shù)組前兩個(gè)元素刪除并用新元素代替剃诅,新元素調(diào)用method方法進(jìn)行計(jì)算
  }
  return tagArr[0] // 將調(diào)用method方法得到的新元素作為數(shù)組的首個(gè)元素
}
// 測(cè)試函數(shù)
var sum = likeReduce([2,5], function(v1, v2){ return v1 + v2 } , 10) // 有初始值的加和
var product = likeReduce([2,5,8], function(v1, v2){ return v1 * v2 }  ) // 無初始值的乘積 輸出80
console.log(sum)

寫一個(gè)函數(shù)getChIntv

獲取從當(dāng)前時(shí)間到指定日期的間隔時(shí)間

function getChIntv(x){
  var today = Date.parse(new Date()) // 使用parse方法獲取 當(dāng)前 時(shí)間距離70年1月1日的間隔時(shí)間
  var targerDay = Date.parse(x) // 使用parse方法獲取 目標(biāo) 時(shí)間距離70年1月1日的間隔時(shí)間
  return today - targerDay // 將當(dāng)前巷送、目標(biāo)日期相對(duì)70年的間隔的時(shí)間,做減法運(yùn)算得到當(dāng)前和目標(biāo)日期的間隔
}
var str = getChIntv("2017-02-08T10:30:24"); // 將函數(shù)執(zhí)行完畢的數(shù)組賦值給str
console.log(str); // 輸出計(jì)算得出的時(shí)間間隔

寫一個(gè)函數(shù)

參數(shù)為時(shí)間對(duì)象毫秒數(shù)的字符串格式矛辕,返回值為字符串笑跛。假設(shè)參數(shù)為時(shí)間對(duì)象毫秒數(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è)月)
/*
1分鐘:60000ms
3分鐘:180000ms
8小時(shí):28800000ms
3天:259200000ms
2個(gè)月:5184000000ms(60天)
8年:252288000000ms
*/
//函數(shù)體如下

function friendlyDate(time){
  var time // 聲明一個(gè)time變量
  switch(true){ // 使用switch語句翻屈,將變量和對(duì)應(yīng)的時(shí)間進(jìn)行比較運(yùn)算陈哑,并將相應(yīng)的字符串賦值給變量
    case time <= 60000:
      time = '剛剛'
      break

    case time > 60000 && time <= 180000:
      time = '3分鐘內(nèi)'
      break

    case time > 180000 && time <= 28800000:
      time = '8小時(shí)內(nèi)'
      break

    case time > 28800000 && time <= 259200000:
      time = '3天內(nèi)'
      break

    case time > 259200000 && time <= 5184000000:
      time = '2個(gè)月內(nèi)'
      break

    case time > 5184000000 && time <= 252288000000:
      time = '8年內(nèi)'
      break

    default:
      time = '這是墳不要挖'
  }
  return time // 返回賦值后的變量
}
var str = friendlyDate( '1' ) //  輸出任意毫秒數(shù)的數(shù)字或字符串,查詢是否成功
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末伸眶,一起剝皮案震驚了整個(gè)濱河市惊窖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌厘贼,老刑警劉巖界酒,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異涂臣,居然都是意外死亡盾计,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門赁遗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來署辉,“玉大人,你說我怎么就攤上這事岩四】蕹ⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵剖煌,是天一觀的道長材鹦。 經(jīng)常有香客問我逝淹,道長,這世上最難降的妖魔是什么桶唐? 我笑而不...
    開封第一講書人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任栅葡,我火速辦了婚禮,結(jié)果婚禮上尤泽,老公的妹妹穿的比我還像新娘欣簇。我一直安慰自己,他們只是感情好坯约,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開白布熊咽。 她就那樣靜靜地躺著,像睡著了一般闹丐。 火紅的嫁衣襯著肌膚如雪横殴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,842評(píng)論 1 290
  • 那天卿拴,我揣著相機(jī)與錄音衫仑,去河邊找鬼。 笑死堕花,一個(gè)胖子當(dāng)著我的面吹牛惑畴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播航徙,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼陷虎!你這毒婦竟也來了到踏?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤尚猿,失蹤者是張志新(化名)和其女友劉穎窝稿,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體凿掂,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡伴榔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了庄萎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片踪少。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖糠涛,靈堂內(nèi)的尸體忽然破棺而出援奢,到底是詐尸還是另有隱情,我是刑警寧澤忍捡,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布集漾,位于F島的核電站切黔,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏具篇。R本人自食惡果不足惜纬霞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望驱显。 院中可真熱鬧诗芜,春花似錦、人聲如沸秒紧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽熔恢。三九已至脐湾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間叙淌,已是汗流浹背秤掌。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鹰霍,地道東北人闻鉴。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像茂洒,于是被迫代替她去往敵國和親孟岛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

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

  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,219評(píng)論 0 4
  • ES5數(shù)組 & 字符串 & Math & Date JS字符串 表示方法 var a = ''; var a = ...
    Frank_Yi閱讀 394評(píng)論 0 0
  • 1次询、寫一個(gè)函數(shù),返回從min到max之間的 隨機(jī)整數(shù)瓷叫,包括min不包括max random生成0到1之間的隨機(jī)數(shù)屯吊,...
    海山城閱讀 250評(píng)論 0 0
  • 1、寫一個(gè)函數(shù)摹菠,返回從min到max之間的 隨機(jī)整數(shù)盒卸,包括min不包括max 思路:產(chǎn)生隨機(jī)數(shù)要用到Math.ra...
    zh_yang閱讀 961評(píng)論 0 2
  • ??引用類型的值(對(duì)象)是引用類型的一個(gè)實(shí)例世落。 ??在 ECMAscript 中,引用類型是一種數(shù)據(jù)結(jié)構(gòu),用于將數(shù)...
    霜天曉閱讀 1,044評(píng)論 0 1