美文网首页
Math、Array、Date

Math、Array、Date

作者: YangJeremy | 来源:发表于2018-02-20 13:45 被阅读0次

    Math任务
    1、写一个函数,返回从min到max之间的随机整数,包括min不包括max

    写一个函数,返回从0到20之间的随机整数,包括0不包括20.
    
      function callen(){
       var obj={};
       for(var i=0;i<1000;i++){
       var num=Math.floor(Math.random()*20);
        if(obj[num]!=undefined){
           obj[num]++
           }else{
              obj[num]=1
           }
        }return obj
     }    
    
    callen();
    

    2、写一个函数,返回从min都max之间的随机整数,包括min包括max

    写一个函数,返回从0到20之间的随机整数,包括0包括20.
       function callen(){
        var obj={};
        for(var i=0;i<1000;i++){
            var num=Math.floor(Math.random()*21);
             if(obj[num]!=undefined){
                   obj[num]++
                  }else{
                         obj[num]=1
                 }
         }return obj
      }    
    
    callen();
    

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

    function getRandStr(len){
     var dict='0123456789abcdefghijklmnopqrstuvwsyzABCDEFGHIJKLMNOPQRSTUVWSYZ'
           var ch;
           var str='';
           var idx;
          for(var i=0;i<len;i++){
    
              idx=Math.floor(Math.random()*62)
              ch=dict[idx]
              str+=ch
    
             }return str
    }
    var str = getRandStr(10); // 0a3iJiRZap
    

    4、写一个函数,生成一个随机 IP 地址,一个合法的 IP 地址为 0.0.0.0~255.255.255.255

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

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

    function getRandColor(){
      var dict='0123456789abcdef'
      var index
      var ch
      var str=""
      for(var i=0;i<6;i++){
          index=Math.floor(Math.random()*16)
          ch=dict[index]
          str+=ch
          }return '#'+str
    }
    var color = getRandColor()
    console.log(color)   // #3e2f1b
    

    数组任务
    1、数组方法里push、pop、shift、unshift、join、split分别是什么作用?用 splice函数分别实现push、pop、shift、unshift方法
    push是在数组后面添加一项;pop是取得最后一项并移除;shift是取得数组项的第一位并移除;unshift是在第一位添加;join把数组转换为字符串,它会以你传递的内容作为连接符号;

    var arr=[1,2,4,-1]
    arr.splice(5,0,8)  //与arr.push(8)效果一样
    console.log(arr)  //输出[1,2,4,-1,8]
    
    var arr=[1,2,4,-1]
    arr.splice(3,1) //与arr.pop()效果一样
    console.log(arr)  //输出[1,2,4]
    
    var arr=[1,2,4,-1]
    arr.splice(0,1)  //与arr.shift()效果一样
    console.log(arr)//输出[2,4,-1]
    
    var arr=[1,2,4,-1]
    arr.splice(0,0,8)  //与arr.unshift(8)效果一样
    console.log(arr)//输出[8,1,2,4,-1]
    
    

    2、写一个函数,操作数组,数组中的每一项变为原来的平方,在原数组上操作

    function squareArr(arr){
          var newarr=arr.map(function(a){return a*a})
          return newarr
        }
    var arr = [2, 4, 6]
    squareArr(arr)
    console.log(arr) // [4, 16, 36]
    

    3、写一个函数,操作数组,返回一个新数组,新数组中只包含正数,原数组不变

    function filterPositive(arr){
    var newArr=[];
    for(var i=0;i<arr.length;i++){
         if(arr[i]>0&&typeof arr[i]==='number'){
               newArr.push(arr[i])
                }
          }return newArr
    }
    var arr = [3, -1,  2,  '饥人谷', true]
    var newArr = filterPositive(arr)
    console.log(arr) //[3, 2]
    

    Date任务
    1、 写一个函数getChIntv,获取从当前时间到指定日期的间隔时间

    function getChIntv(timestr){
    var timeEnd=new Date(timestr).getTime();
    var now=new Date().getTime();
    
    var offsertime=timeEnd-now;
    
    var days=parseInt(offsertime/(1000*60*60*24))
    var hours=parseInt(offsertime%(1000*60*60*24)/(1000*60*60))
    var minutes=parseInt(offsertime%(1000*60*60*24)%(1000*60*60)/(1000*60))
    var seconds=parseInt(offsertime%(1000*60*60*24)%(1000*60*60)%(1000*60)/1000)
    
    return '距除夕还有'+days+'天'+hours+'小时'+ minutes+'分'+seconds+'秒'
    }
    var str = getChIntv("2017-02-08");
    console.log(str);  // 距除夕还有 20 天 15 小时 20 分 10 秒
    

    2、把hh-mm-dd格式数字日期改成中文日期

    
    var dict={'0':'零','1':'一','2':'二','3':'三','4':'四','5':'五','6':'六','7':'七','8':'八','9':'九','10':'十','11':'十一','12':'十二',13:'十三',14:'十四',15:'十五',16:'十六',17:'十七',18:'十八',19:'十九',20:'二十',21:'二十一',22:'二十二',23:'二十三',24:'二十四',25:'二十五',26:'二十六',27:'二十七',28:'二十八',29:'二十九',30:'三十',31:'三十一'}
    
    function getChsDate(str){
    var dateArr=str.split('-');
    var year=dateArr[0];
    var month=dateArr[1];
    var day=dateArr[2];
    
    var Chyear=dict[(year[0])]+dict[(year[1])]+dict[(year[2])]+dict[(year[3])]+'年';
    var Chmonth=dict[parseInt(month)+'']+'月';
    var Chday=dict[parseInt(day)+'']+'日'
    
    return Chyear+Chmonth+Chday;
    }
    
    var str = getChsDate('2015-01-08');
    console.log(str);  // 二零一五年一月八日
    

    3、写一个函数,参数为时间对象毫秒数的字符串格式,返回值为字符串。假设参数为时间对象毫秒数t,根据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 now=new Date().getTime();
    console.log(now)
    var c=(now-time)/1000;
    
    if(c<60){
       return '刚刚'
    }else if(c>=60&&c<3600){
       return '3分钟前'
    }else if(c>=3600&&c<8*3600){
       return '8小时前'
    }else if(c>=24*3600&&c<24*3600*30){
       return '3天前'
    }else if(c>=24*3600*30&&c<24*3600*30*12){
       return '2个月前'
    }else if(c>24*3600*30*12){
       return '8年前'
        }
    }
    
    

    相关文章

      网友评论

          本文标题:Math、Array、Date

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