JS字符串&Math&Data

作者: 小7丁 | 来源:发表于2018-07-29 20:51 被阅读7次

    一、对于字符串

    var str = 'hello jirengu.com'
    写出以下操作的代码范例

    1. 获取 str 下标为3的字符
    2. 获取 str 下标为4的字符的 Ascii 码
    3. 截取字符g到末尾的字符串
    4. 从字符o开始,截取长为4个字符的字符串
    5. 获取第一个 l的下标
    var str = 'hello jirengu.com'
    console.log(str.charAt(3))
    console.log(str.charCodeAt(4))
    console.log(str.substring(str.search('g'),str.length))
    console.log(str.substr(str.search('o'),4))
    var s1 = str.search('l')
    console.log(s1)
    

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

    function random(min,max) {
        return Math.random()*(max - min)+min   
    }
    

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

    function getRandIP(){
        function random(a,b){
            return Math.floor(Math.random()*(b - a + 1))+a
        }
        var arr = []
        for(var i=0;i<4;i++) {
            arr.push(random(0,255))
        }
        return arr.join('.')
    }
    var ip = getRandIP()
    console.log(ip) // 10.234.121.453
    

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

     function getRandColor(){
        function random(a,b){
            return Math.floor(Math.random()*(b - a + 1))+a
        }
        var arr = ''
        var dict = '0123456789abcdef'
        for(var i=0;i<6;i++) {
            arr += dict[random(0,15)]
        }
        return '#' + arr
    }
    var color = getRandColor()
    console.log(color)   // #3e2f1b
    

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

    function getRandStr(len){
      var str = ''
        var dict = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
        for(var i = 0;i < len;i++) {
            var index = Math.floor(Math.random()*dict.length)
            str += dict[index]
        }    
        return str
    }
    var str = getRandStr(10); 
    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个月)

    function friendlyDate(time){
    
        var dtime = Date.now() - parseInt(time)
        var minute = 60*1000
        var hour = minute*60
        var day = hour*24
        var month = day*30
        var year = month*12
    
        if (dtime < minute) {
    
            return '刚刚'
        }else 
        if (dtime < hour) {
    
            return `${Math.floor(dtime/minute)}分钟前`
        }else
        if (dtime < day) {
    
            return `${Math.floor(dtime/hour)}小时前`
        }else
        if(dtime < month) {
    
            return `${Math.floor(dtime/day)}天前`
        }else
        if(dtime < year) {
    
            return `${Math.floor(dtime/month)}月前`
        }else
        if(dtime >= year) {
    
            return `${Math.floor(dtime/year)}年前`
        }
    }
    var date1 = Date.now()
    console.log(friendlyDate(date1))
    
    var date2 = new Date (2018,1,27,14,46)
    console.log(friendlyDate(date2.getTime()));
    
    var date3 = new Date (2018,1,27,11,54);
    console.log(friendlyDate(date3.getTime()));
    
    var date4 = new Date (2018,1,26,14,55);
    console.log(friendlyDate(date4.getTime()));
    
    var date5 = new Date (2018,0,28,14,57);
    console.log(friendlyDate(date5.getTime()));
    
    var date6 = new Date (2017,2,4,14,58);
    console.log(friendlyDate(date6.getTime()));
    

    七、实现一个reduce函数,作用和原生的reduce类似下面的例子。

    function reduce(arr,fn,initvalue){
        var arr2 = (initvalue === undefined ? [] :[initvalue]).concat(arr)
        while(arr2.length>1) {
            arr2.splice(0,2,fn(arr2[0],arr2[1]))
        }
        return arr2[0]
    }
    var sum = reduce([1, 2, 3], function(memo, num){ return memo + num; }, 0)
    console.log(sum)
    

    八、实现一个flatten函数,将一个嵌套多层的数组 array(数组) (嵌套可以是任何层数)转换为只有一层的数组,数组中元素仅基本类型的元素或数组,不存在循环引用的情况。

    var arr =[1, [2], [3, [[4]]]]
    
    var arr2 = flat(arr)
    
    function flat(arr) {
        var arr2 = []
        arr.forEach(function(val){
            if(Array.isArray(val)){
                arr2 = arr2.concat(flat(val))
            }else{
            arr2.push(val)
            }
        })
        return arr2
    }
    console.log(arr2)
    

    相关文章

      网友评论

        本文标题:JS字符串&Math&Data

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