美文网首页
Math、数组、Date

Math、数组、Date

作者: QQQQQCY | 来源:发表于2017-07-12 16:40 被阅读0次

    Math任务


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

    function random(min,max){
        return Math.floor(min+(max-min)*Math.random());
    }
    console.log(random(5,15));
    

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

    <script>
    function random(min,max){
        return Math.round(min+(max-min)*Math.random());
    }
    console.log(random(5,15));
    </script>
    

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

    var dic='0123456789abcdefghijklmopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
    
    function getRandomStr(len){
        var newStr = '';
        for (var i = 0; i<len; i++){
            newStr += dic[Math.floor(dic.length*Math.random())];
        }
        return newStr;
    }
    console.log(getRandomStr(10));
    

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

    function getRandIP(){
      var randomIP =[];
      for (var i = 0; i<4; i++)
        randomIP.push(Math.round(255*Math.random()));
      return randomIP.join('.');
    }
    var ip = getRandIP()
    console.log(ip) 
    

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

    var dic = '0123456789abcdef'
    
    function getRandColor(){
        var colorStr = '#';
        for (var i = 0; i<6; i++)
            colorStr += dic[Math.floor(dic.length*Math.random())];
        return colorStr
    }
    var color = getRandColor()
    console.log(color)   
    

    数组任务


    1、数组方法里push、pop、shift、unshift、join、splice分别是什么作用?用 splice函数分别实现push、pop、shift、unshift方法

    • push
    //  在数组的末尾增加一个或多个元素,并返回数组的新长度。
    var arr = [2, 3, 4];
    arr.push(10);
    console.log(arr);  //  2, 3, 4, 10
    
    • pop
    //  删除数组的最后一个元素,并返回这个元素。。
    var arr = [2, 3, 4];
    arr.pop();
    console.log(arr);  //  2, 3, 
    
    • shift
    //  删除数组的第一个元素,并返回这个元素。
    var arr = [2, 3, 4];
    arr.shift();
    console.log(arr);  //   3, 4
    
    • unshift
    //  在数组的开头增加一个或多个元素,并返回数组的新长度
    var arr = [2, 3, 4];
    arr.unshift(4, 5);
    console.log(arr);  //   4, 5, 2, 3, 4
    
    • join
    //  连接所有数组元素组成一个字符串。
    var arr = [2, 3, 4];
    console.log(arr.join('--'));  //   2--3--4
    
    • splice
    //  在任意的位置给数组添加或删除任意个元素。
    //
    //      模拟 push
    var arr = [2, 3, 4];
    arr.splice(arr.length, 0, 10);
    console.log(arr);  //  2, 3, 4, 10
    //
    //      模拟 pop
    var arr = [2, 3, 4];
    arr.splice(--arr.length, 1);
    console.log(arr);  //  2, 3
    //
    //      模拟 shift
    var arr = [2, 3, 4];
    arr.splice(0, 1);
    console.log(arr);  //  3, 4
    //
    //      模拟 unshift
    var arr = [2, 3, 4];
    arr.splice(0, 0, 4, 5);
    console.log(arr);  //  4, 5, 2, 3, 4
    

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

    function squareArr(arr){
        for (var i=0; i<arr.length; i++)
            arr[i] *= arr[i];
    }
    var arr = [2, 4, 6]
    squareArr(arr)
    console.log(arr) // [4, 16, 36]
    

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

    function filterPositive(arr){
        return arr.filter(function(x){
            return (typeof(x)==='number' && x!=NaN && x>0);
        })
    }
    var arr = [3, -1,  2,  '饥人谷', true]
    var newArr = filterPositive(arr)
    console.log(newArr) //[3, 2]
    console.log(arr) //[3, -1,  2,  '饥人谷', true]
    

    Date 任务


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

    function getChIntv(str){
        var x = Date.parse(str) - Date.now();
        var tDays = Math.floor(x/(24*60*60*1000));
        var tHours = Math.floor(x/(60*60*1000)) -(tDays * 24);
        var tMins = Math.floor(x/(60*1000)) -((tDays * 24 + tHours) *60);
        var tSecs = Math.floor(x/(1000)) -(((tDays * 24 + tHours) *60 + tMins)*60);
        return '距离除夕还有 '+ tDays+' 天 '+ tHours+' 小时 '+ tMins+' 分 '+tSecs+' 秒 ';
    }
    
    var str = getChIntv("2018-02-17");
    console.log(str);  // 距除夕还有 20 天 15 小时 20 分 10 秒
    

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

    var dic = '零一二三四五六七八九';
    function getChsDate(str){
        var arr=str.split('-'),
            newStr = '';
        for (var i=0; arr[0].length>i; i++)
            newStr += dic[arr[0][i]];
    
        function transNum(x){
            var newDate='',
                y = Math.floor(x/10);;
            if (y>1) newDate += dic[y];
            if (y>0) newDate += '十';
            if (x%10 !== 0)newDate += dic[x%10];
            return newDate;
        }
        return newStr+'年' + transNum(+arr[1]) + '月' + transNum(+arr[2]) + '日';
    }
    
    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 nowtime = Date.now();
        var dicN = [1000*60,1000*60*60,1000*60*60*24,1000*60*60*24*30,1000*60*60*24*30*12],
            dicS = ['刚刚','分钟前','小时前','天前','个月前','年前'];
        if (nowtime - (+time) < 0 ) 
            dicS = ['马上','分钟后','小时后','天后','个月后','年后'];
        var x = Math.abs(nowtime - (+time));
        if (x<dicN[0]) return (dicS[0]);
        for (var i=1;i<5;i++)
            if (x<dicN[i]) return Math.floor(x/dicN[i-1])+" "+dicS[i];
        return Math.floor(x/dicN[i-1])+" "+dicS[i];
    
    }
    var a = new Date('2017-3-11');   
    var str = friendlyDate(a.getTime())  //  4 个月前 
    var str2 = friendlyDate('1500800941293')   //  11 天后
    console.log(str);
    console.log(str2);
    
    

    相关文章

      网友评论

          本文标题:Math、数组、Date

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