美文网首页
进阶任务六

进阶任务六

作者: 饥人谷_迪 | 来源:发表于2017-11-27 17:59 被阅读0次

    Math 任务

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

    function getRandom(a,b){
            var num = a + Math.floor(Math.random()*(b-a))
            return num
        }
    
         console.log(getRandom(3,9))
    
    1. 写一个函数,返回从min都max之间的 随机整数,包括min包括max
    function getRandom(a,b){
            var num = a + Math.floor(Math.random()*(b+1-a))
            return num
        }
    
    1. 写一个函数,生成一个长度为 n 的随机字符串,字符串字符的取值范围包括0到9,a到 z,A到Z。
     function getRandStr(len){
            var str = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
            var result = ''
            for( var i = 0; i < len; i++){
                var key = Math.floor(Math.random()*62)
                result += str[key]
            }
            return result;
         }
    
         console.log(getRandStr(7));
    
    1. 写一个函数,生成一个随机 IP 地址,一个合法的 IP 地址为 0.0.0.0~255.255.255.255
    function getRandIP(){
            var arr = []
            for(var i = 0; i < 4; i++){
                arr.push(Math.floor(Math.random()*256))
            }
            var str = arr.join(".")
            return str   
        }
        var ip = getRandIP()
        console.log(ip) 
    
    1. 写一个函数,生成一个随机颜色字符串,合法的颜色为#000000~ #ffffff
    function getRandColor(){
        var dict = '0123456789abcdef'
        var str = ''
        for(i = 0; i < 6; i++){
            var key =Math.floor(Math.random()*16)
            str += dict[key]
            }
        return result = '#' + str;
    }
    var color = getRandColor()
    console.log(color)
    

    数组任务

    1. 数组方法里push、pop、shift、unshift、join、splice分别是什么作用?用 splice函数分别实现push、pop、shift、unshift方法
    • push() 方法用于在数组的末端添加一个或多个元素,并返回添加新元素后的数组长度。注意,该方法会改变原数组。

    1.添加元素到数组

    var a = [1,5,9]
    var b = a.push(7,6);
    console.log(a);  //[1, 5, 9, 7, 6]
    console.log(b); // 5
    

    2.合并数组

    var a = [1,5,9]
    var b = [2,4.6]
    var c = a.push.apply(a,b)
    var d = Array.prototype.push.apply(a,b)
    console.log(a) // [1,5,9,2,4,6]
    
    1. push方法还可以用于向对象添加元素,添加后的对象变成类似数组的对象,即新加入元素的键对应数组的索引,并且对象有一个length属性。
    var a = {a: 1};
    
    [].push.call(a, 2);
    a // {a:1, 0:2, length: 1}
    
    [].push.call(a, [3]);
    a // {a:1, 0:2, 1:[3], length: 2}
    
    • pop() 方法用于删除数组的最后一个元素,并返回该元素。注意,该方法会改变原数组。
    var c = [1,5,6]
    var d= c.pop()
    console.log(c) // [1,5]
    console.log(d) // 6
    //对空数组使用pop方法,不会报错,而是返回undefined。
    [].pop() // undefined
    

    push和pop结合使用,就构成了“后进先出”的栈结构(stack)。

    • shift()方法用于删除数组的第一个元素,并返回该元素。注意,该方法会改变原数组。
    var a = ['a', 'b', 'c'];
    
    a.shift() // 'a'
    a // ['b', 'c']
    
    • unshift()方法用于在数组的第一个位置添加元素,并返回添加新元素后的数组长度。注意,该方法会改变原数组。

    • join()方法以参数作为分隔符,将所有数组成员组成一个字符串返回,原数组不变。如果不提供参数,默认用逗号分隔。

    通过call方法,这个方法也可以用于字符串。

    Array.prototype.join.call('hello', '-')
    // "h-e-l-l-o"
    
    • splice()方法用于删除原数组的一部分成员,并可以在被删除的位置添加入新的数组成员,返回值是被删除的元素。注意,该方法会改变原数组。

    splice()的第一个参数是删除的起始位置,第二个参数是被删除的元素个数。如果后面还有更多的参数,则表示这些就是要被插入数组的新元素。

    var a = ['a', 'b', 'c', 'd', 'e', 'f'];
    a.splice(4, 2) // ["e", "f"]
    a // ["a", "b", "c", "d"] 从原数组4号位置,删除了两个数组成员。
    
    var a = ['a', 'b', 'c', 'd', 'e', 'f'];
    a.splice(4, 2, 1, 2) // ["e", "f"]
    a // ["a", "b", "c", "d", 1, 2] 删除成员,还插入了两个新成员
    
    // 如果只是单纯地插入元素,splice方法的第二个参数可以设为0。
    var a = [1, 1, 1];
    a.splice(1, 0, 2) // []
    a // [1, 2, 1, 1]
    // 如果只提供第一个参数,等同于将原数组在指定位置拆分成两个数组。
    var a = [1, 2, 3, 4];
    a.splice(2) // [3, 4]
    a // [1, 2]
    
    • 用splice函数实现push、pop、shift、unshift方法
    1. 实现push()方法
    function getPush(arr ,ele){
        arr.splice(arr.length, 0, ele)
        return arr.length
    }
    
    
    1. 实现pop()方法
    function getPop(arr){
            result = arr.splice(arr.length - 1,1)
            return result[0]
        }
    
        arr = [4,6,8,10]
        console.log(getPop(arr)); //10
    
    1. 实现shift()方法
    function getShift(arr){
            result = arr.splice(0,1)
            return result[0]
        }
        console.log(getShift(arr)); //4
    
    1. 实现unshift()方法
    function getUnshift(arr, ele){
            arr.splice(0, 0, ele)
            return arr.length;
        }
        arr = [4,6,8,10]
        console.log(getUnshift(arr,7))// 5
    
    1. 写一个函数,操作数组,数组中的每一项变为原来的平方,在原数组上操作
    function squareArr(arr){
            for( 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]
    
    1. 写一个函数,操作数组,返回一个新数组,新数组中只包含正数,原数组不变
    function filterPositive(arr){
            var newArr = []
            for(i = 0; i < arr.length; i++){
                if(typeof(arr[i]) == 'number' && arr[i] > 0){
                    newArr.push(arr[i])
                }
            }
            return newArr
        }
        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(dateStr){
            var targetDate = new Date(dateStr);
            var curDate = new Date();
            var offset = Math.abs(targetDate - curDate);
            
            var totalSeconds = Math.floor(offset / 1000);
            var second = totalSeconds % 60
    
            var totalMinutes = Math.floor(totalSeconds / 60)
            var minutes = totalMinutes % 60
    
            var totalHours = Math.floor(totalMinutes / 60)
            var hours = totalHours % 24
    
            var totalDays = Math.floor(totalHours / 24)
    
            return totalDays + '天' + hours + '小时' + minutes + '分钟' + second+'秒'
        }
        var str = getChIntv("2017-02-08");
        console.log(str);  // 距除夕还有 20 天 15 小时 20 分 10 秒
    
    1. 把hh-mm-dd格式数字日期改成中文日期
    function getChsDate(dateStr){
            var dict = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九',"十", "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十", "二十一", "二十二", "二十三", "二十四", "二十五", "二十六", "二十七", "二十八", "二十九", "三十", "三十一"]
    
            dateArr = dateStr.split('-')
    
            var year = dateArr[0]
            var month = dateArr[1]
            var date = dateArr[2]
    
            var newYears = dict[parseInt(year[0])]+dict[parseInt(year[1])]+dict[parseInt(year[2])]+dict[parseInt(year[3])]+'年';
            var newMonths = dict[parseInt(month)]+'月';
            var newDays = dict[parseInt(date)]+'日';
            
            return newYears + newMonths + newDays;
            
        }
    
        var str = getChsDate('2015-01-08');
        console.log(str);  // 二零一五年一月八日
    
    
    1. 写一个函数,参数为时间对象毫秒数的字符串格式,返回值为字符串。假设参数为时间对象毫秒数t,根据t的时间分别返回如下字符串:
    function friendlyDate(time){
            var offTime = Date.now() - time;
    
            var str = '';
            if(  offTime /1000 < 60 ){
                str = '刚刚'
            }else if( 60 <= offTime / 1000 < (60 * 60)){
                str = '3分钟前';
            }else if((60 * 60) <= offTime / 1000 < (24 * 60 * 60)){
                str = '8小时前'
            }else if((24 * 60 * 60) <= offTime / 1000 < (3 * 24 * 60 * 60)){
                str = '3天前'
            }else if((3 * 24 * 60 * 60) <= offTime / 1000 < (12 * 30 * 24 * 60 * 60)){
                str = '2个月前'
            }else {
                str = '8年前'
            }
            return str;
    }
    console.log(friendlyDate( '1511776208158' )) //  1分钟前
    

    相关文章

      网友评论

          本文标题:进阶任务六

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