美文网首页
进阶6 Math数组Date

进阶6 Math数组Date

作者: 512a36a11b8c | 来源:发表于2017-11-16 18:06 被阅读37次

    math任务

    1. 写一个函数,返回从min到max之间的 随机整数,包括min不包括max
    function getRandomArbitrary(min, max) {
      return Math.floor(Math.random() * (max - min)) + min;
    }
    console.log(getRandomArbitrary(1,5))//返回1-4的随机数
    
    2. 写一个函数,返回从min都max之间的 随机整数,包括min包括max
    function getRandomArbitrary(min, max) {
      return Math.floor(Math.random() * (max - min + 1)) + min;
    }
    console.log(getRandomArbitrary(1,5))//返回1-5的随机数
    
    3. 写一个函数,生成一个长度为 n 的随机字符串,字符串字符的取值范围包括0到9,a到 z,A到Z。
    function getRandStr(len){
      var _string = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
      var tempString = ''
      for (var i = len - 1; i >= 0; i--) {
        var index = Math.floor(Math.random()*_string.length)
        tempString += _string[index]
      }
      return tempString
    }
    var str = getRandStr(10);
    
    4. 写一个函数,生成一个随机 IP 地址,一个合法的 IP 地址为 0.0.0.0~255.255.255.255
    function genIp(){
        var arr = new Array(4);
        for(var i=0;i<4;i++){
            var num=Math.floor(Math.random()*256);
            arr[i]=num;
        }return arr.join('.');
    }
    var demo = genIp();
    console.log(demo);
    
    5. 写一个函数,生成一个随机颜色字符串,合法的颜色为#000000~ #ffffff
    var arr = [3,4,6];
    function squareArr(arr){
        var result;
        for(var i=0;i<arr.length;i++){
            result = arr[i]*arr[i];
            arr.splice(i,1,result);
        }return arr;
    }
    var demo = squareArr(arr);
    //方法2,更优雅
    var _arr = [4,5,6]
    function squareArr2(arr){
        return arr.map(function(x){
            return x*x
        })
    }
    console.log(squareArr2(_arr))
    

    数组任务

    1. 数组方法里push、pop、shift、unshift、join、splice分别是什么作用?用 splice函数分别实现push、pop、shift、unshift方法
    var arr = ["a","b","c"];
    //push方法将一个或多个元素添加到数组的末尾,并返回数组的新长度
    var value1 = arr.push("d")                   arr = ["a","b","c","d"]
    var value2 = arr.push("e","f")               arr = ["a","b","c","d","e","f"]
    console.log(value1)  //  4
    console.log(value2)  //  6
    
    //pop从数组中删除最后一个元素,并返回该元素的值。此方法更改数组的长度
    var value3 = arr.pop()                         
    console.log(value3)  //  f    arr = ["a","b","c","d","e"]
    
    //shift方法从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度
    var value4 = arr.shift()
    console.log(value4)  // a    arr = ["b","c","d","e"]
    
    //unshift方法将一个或多个元素添加到数组的开头,并返回新数组的长度
    var value5 = arr.unshift("g","h")              arr = ["g","h","b","c","d","e"]
    console.log(value5)  //   6
    
    push与unshift对应 ,pop与shift对应(ps:竟然不是shift与unshift对应。。。)
    
    //join方法方法将数组(或一个[类数组对象])的所有元素连接到一个字符串中  此方法并不改变原数组
    var str = arr.join()                             无参数则默认为","
    console.log(str)         //   g,h,b,c,d,e
    var str2 = arr.join("")  
    console.log(str2)   //  ghbcde
    
    splice法通过删除现有元素和/或添加新元素来更改一个数组的内容,返回由被删除的元素组成的一个数组
    ,如果只删除了一个元素,则返回只包含一个元素的数组。如果没有删除元素,则返回空数组。
    语法  arr.splice(start,deletement,item1,item2)
    start:开始的位置  (这个开始的位置有点特别,如果不删只添加的话,开始的位置就是添加的第一个成员
          在改变过的数组中的位置)
    deletement:要删除的个数
    item1,item2 要添加的成员
    
    var arr = ["a","b","c"];
    var arr2 = arr.splice(1,2)
    console.log(arr2)   //  ["b","c"]
    
    # splice实现arr.push("d","e")
    arr.splice(arr.length,0,"d","e") 
    console.log(arr)    // ["a","d","e"]
    
    # splice实现 arr.pop()
    arr.splice(arr.length-1,1)
    console.log(arr)   //   ["a","d"]
    
    #splice实现arr.shift()
    arr.splice(0,1)
    console.log(arr)  //  ["d"]
    
    #splice实现arr.unshift("a","b","c")
    arr.splice(0,0,"a","b","c")
    console.log(arr)   //  ["a","b","c","d"]
    
    2. 写一个函数,操作数组,数组中的每一项变为原来的平方,在原数组上操作
    function squareArr(arr){
      for(var i = 0; i < arr.length; i++){
        arr[i] = arr[i]*arr[i]
      }
      return arr;
    }
    var arr = [2, 4, 6]
    squareArr(arr)
    console.log(arr)   //[4, 16, 36]
    
    3. 写一个函数,操作数组,返回一个新数组,新数组中只包含正数,原数组不变
    function filterPositive(arr){
        return arr.filter(function(item) {
            return item > 0 && typeof item === "number"
        })
    }
    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,获取从当前时间到指定日期的间隔时间
    var str = getIntv("2018-02-08");
    function getIntv(time){
        var end = new Date(time);
        var now = new Date();
        var timer = end-now;
        var day = Math.floor(timer/(1000*60*60*24));
        var timer1 = timer%(1000*60*60*24)
        var hour = Math.floor(timer1/(1000*60*60));
        var timer2 = timer1%(1000*60*60);
        var min = Math.floor(timer2/(1000*60));
        var timer3 = timer2%(1000*60);
        var sec = Math.floor(timer3/1000);
        return ("距"+time+"还有"+day+"天"+hour+"小时"+min+"分钟"+sec+"秒")
      }
    console.log(str);
    
    2. 把hh-mm-dd格式数字日期改成中文日期
    function getChsDate(date){
        var newDate =date.split("-"),
            year = newDate[0],
            month = newDate[1],
            day = newDate[2];
        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": "三十一"};
    return dict[year[0]]+dict[year[1]]+dict[year[2]]+dict[year[3]] + '年' + dict[Number(month)] +'月' + dict[Number(day)] + '日';
    };
    getChsDate('2015-01-08');//"二零一五年一月八日"
    
    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 t = new Date().getTime();
        var c = (t-time)/1000;
        switch(true){
            case c < 60:
            console.log('刚刚');
            break;
            case c >=60 && c<60*60:
            return Math.floor(c/60)+'分钟前';
            break;
            case c>=3600 && c<3600*24:
            return Math.floor(c/3600)+"小时前";
            break;
            case c>=3600*24 && c<3600*24*30:
            return Math.floor(c/3600/24)+"天前";
            break;
            case c>=3600*24*30 && c<3600*24*30*12:
            return Math.floor(c/3600/24/30)+"月前";
            break;
            default:
            return Math.floor(c/3600/24/30/12)+"年前";
            break;
        }
    }
    var str = friendlyDate(Date.now()-1000*60);
    console.log(str);
    var str2 = friendlyDate('1483941245793');
    console.log(str2);
    

    相关文章

      网友评论

          本文标题:进阶6 Math数组Date

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