【Javascript】ES5数组、字符串、Date


写一个随机整数函数

返回从min到max之间的 随机整数,包括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)
}

写一个随机字符串函数

生成一个长度为 n 的随机字符串,字符串字符的取值范围包括0到9,a到 z,A到Z。

function getRandStr(len){
  var str = '' // 声明需要的是一个字符串
  var dict = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' // 声明字符串的取值范围
  for(var i = 0; i < len; i++){ // 使用for循环来执行多次范围取值
    var x= Math.floor(Math.random()*dict.length) // 从字符串取值范围中,随机出一个下标数作为本次取到的值
    str = str + dict[x] // 将本次取到的值和元字符串做运算拼接字符串
  }
  return str // 返回循环结束后的字符串
}
getRandStr(x); // 填写需要的字符串长度以验证函数正确性

写一个随机 IP 地址函数

生成一个随机 IP 地址,一个合法的 IP 地址为 0.0.0.0~255.255.255.255

function getRandIP(ip){
  var arr = [] // 声明储存IP地址的对象是个数组
  for(var i = 0; i < 4; i++){ // 使用for循环来取4次值
    var x = Math.floor(Math.random()*256) //使用floor方法,将0-255的随机整数赋值给x
    arr.unshift(x) // 在ip数组中添加刚取到的随机值
  }
  return arr // 返回循环结束后的arr数组
}
var ip = getRandIP() // 将函数执行完毕的数组赋值给ip
console.log(ip.join('.')) // 使用join方法将数组以'.'连接并输出

写一个随机颜色字符串函数

生成一个随机颜色字符串,合法的颜色为#000000~ #ffffff

function getRandColor(){
  var str = '#' // // 声明需要的是一个字符串
  var dict = '0123456789abcdef' // 声明字符串的取值范围是十六进制数
  for(var i = 0; i < 6; i++){ // 使用for循环来执行6范围取值
    var x= Math.floor(Math.random()*dict.length) // 从字符串取值范围中,随机出一个下标数作为本次取到的值
    str = str + dict[x] // 将本次取到的值和元字符串做运算拼接字符串
  }
    return str // 返回循环结束后的字符串
}
var color = getRandColor() // 将函数执行完毕的数组赋值给ip
console.log(color) // 输出'#'之后的留个随机十六进制数

实现一个flatten函数

将一个嵌套多层的数组 array(数组) (嵌套可以是任何层数)转换为只有一层的数组,数组中元素仅基本类型的元素或数组,不存在循环引用的情况。
看的有些懵逼,我等到视频上传后看看相关部分再做解答吧

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

实现一个reduce函数

作用和原生的reduce类似
reduce方法的作用是遍历数组,调用回调函数,将数组元素组合成一个值

function likeReduce(arr, method, initValue){ // 声明函数,并有3个参数:初始数组、调用方法/函数、初始值
  var tagArr = (initValue === undefined ? [] : [initValue]).concat(arr)
 //定义一个函数体内的数组,并判断是否有初始值,如果有则拼接,没有则为空数组
  while(tagArr.length > 1){
    tagArr.splice(0, 2, method(tagArr[0], tagArr[1])) 
// 数组长度>1时,使用.splice方法,将数组前两个元素删除并用新元素代替,新元素调用method方法进行计算
  }
  return tagArr[0] // 将调用method方法得到的新元素作为数组的首个元素
}
// 测试函数
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)

写一个函数getChIntv

获取从当前时间到指定日期的间隔时间

function getChIntv(x){
  var today = Date.parse(new Date()) // 使用parse方法获取 当前 时间距离70年1月1日的间隔时间
  var targerDay = Date.parse(x) // 使用parse方法获取 目标 时间距离70年1月1日的间隔时间
  return today - targerDay // 将当前、目标日期相对70年的间隔的时间,做减法运算得到当前和目标日期的间隔
}
var str = getChIntv("2017-02-08T10:30:24"); // 将函数执行完毕的数组赋值给str
console.log(str); // 输出计算得出的时间间隔

写一个函数

参数为时间对象毫秒数的字符串格式,返回值为字符串。假设参数为时间对象毫秒数t,根据t的时间分别返回如下字符串:

  • 刚刚( t 距当前时间不到1分钟时间间隔)
  • 3分钟前 (t距当前时间大于等于1分钟,小于1小时)
  • 8小时前 (t 距离当前时间大于等于1小时,小于24小时)
  • 3天前 (t 距离当前时间大于等于24小时,小于30天)
  • 2个月前 (t 距离当前时间大于等于30天小于12个月)
  • 8年前 (t 距离当前时间大于等于12个月)
/*
1分钟:60000ms
3分钟:180000ms
8小时:28800000ms
3天:259200000ms
2个月:5184000000ms(60天)
8年:252288000000ms
*/
//函数体如下

function friendlyDate(time){
  var time // 声明一个time变量
  switch(true){ // 使用switch语句,将变量和对应的时间进行比较运算,并将相应的字符串赋值给变量
    case time <= 60000:
      time = '刚刚'
      break

    case time > 60000 && time <= 180000:
      time = '3分钟内'
      break

    case time > 180000 && time <= 28800000:
      time = '8小时内'
      break

    case time > 28800000 && time <= 259200000:
      time = '3天内'
      break

    case time > 259200000 && time <= 5184000000:
      time = '2个月内'
      break

    case time > 5184000000 && time <= 252288000000:
      time = '8年内'
      break

    default:
      time = '这是坟不要挖'
  }
  return time // 返回赋值后的变量
}
var str = friendlyDate( '1' ) //  输出任意毫秒数的数字或字符串,查询是否成功
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,204评论 0 4
  • ES5数组 & 字符串 & Math & Date JS字符串 表示方法 var a = ''; var a = ...
    Frank_Yi阅读 385评论 0 0
  • 1、写一个函数,返回从min到max之间的 随机整数,包括min不包括max random生成0到1之间的随机数,...
    海山城阅读 245评论 0 0
  • 1、写一个函数,返回从min到max之间的 随机整数,包括min不包括max 思路:产生随机数要用到Math.ra...
    zh_yang阅读 956评论 0 2
  •   引用类型的值(对象)是引用类型的一个实例。   在 ECMAscript 中,引用类型是一种数据结构,用于将数...
    霜天晓阅读 1,034评论 0 1