美文网首页
【Javascript】ES5数组、字符串、Date

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

作者: NinthG | 来源:发表于2017-09-02 05:38 被阅读0次

    写一个随机整数函数

    返回从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' ) //  输出任意毫秒数的数字或字符串,查询是否成功
    

    相关文章

      网友评论

          本文标题:【Javascript】ES5数组、字符串、Date

          本文链接:https://www.haomeiwen.com/subject/oajljxtx.html