JS:Math、数组和date

Math

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

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

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

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

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

function getRandStr(len){
var dict='0123456789abcdefghigklmnopqstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ';
    var randomstr = '';
    for(var i=0;i

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

function randomIP(){
    var IP=[]
    for(i=0; i<4; i++){
        IP.push(Math.floor(Math.random()*256))
    }
    return IP.join(".")
}

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

function getRandColor(){
    var dict="0123456789abcdf"
    var str= ""
    for(i=0; i<6; i++){
        str+=dict[Math.floor(Math.random()*dict.length)]
    }
    return str="#"+str
}

数组

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

  • push:数组末尾添加新元素,返回新数组长度
// push
function push(arr,item){
    arr.splice(arr.length,0,item)
    return arr.length
}
  • pop:删除数组最后一个元素,返回删除元素
// pop

function pop(arr){
    arr.splice(arr.length-1,1)
    return arr.splice(arr.lenght-1,1)[0]
}
  • shift:删除数组第一个元素,返回删除元素
// shift

function shift(arr){
    arr.splice(0,1)
    return  arr.splice(0,1)[0]
}
  • unshift:数组头部添加元素,返回新数组长度
// unshift

function unshift(arr,item){
    arr.splice(0,1,item)
    return arr.length
}
  • join:将数组使用参数作为连接符连接成一字符串
  • split:将字符串分割成子字符串组成新数组

总结:

1.push和unshift返回值是新数组的长度值,pop和shift返回的是被删除的元素(非数组形式).push和pop都是在数组元素末位加减,unshift和shift都是在数组元素首位加减.
2.splice删除元素时,返回的是第一个参数索引值位置上的元素(数组形式),当第一个参数大于最大索引值返回空数组. splice插入元素时,在第一个参数索引值位置前面插入元素,返回的是空数组[].

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

function squareArr(arr){
    for(var i=0; i

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

function filterNegative(arr){
    var positive=[]
    for(i=0; i0){
            positive.push(arr[i])
        }
    }
    return positive
}

Date

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

function getChIntv(dateStr){
    var targetDate= new Date(dateStr)
    var curDate= new Date()
    var offset= Math.abs(curDate-targetDate)
    var totalS= Math.floor(offset/1000)
    var seconds= totalS%60
    var totalM= Math.floor(totalS/60)
    var minutes= totalM%60
    var totalH= Math.floor(totalM/60)
    var hours= totalH%24
    var totalD= Math.floor(totalH/24)
    return "距今"+totalD+"天"+hours+"小时"+minutes+"分钟"+seconds+"秒"
}

var str = getChIntv("2017-02-08");
console.log(str); 

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

function getChsDate(timeStr){
    var dict = ['零','一','二','三','四','五','六','七','八','九','十','十一','十二','十三','十四','十五','十六','十七','十八','十九','二十','二十一','二十二','二十三','二十四','二十五','二十六','二十七','二十八','二十九','三十','三十一']
    
    var arr = timeStr.split('-')
    var year =  arr[0]
    var day = arr[2]

    var chYear = dict[parseInt(year[0])] + dict[parseInt(year[1])] + dict[parseInt(year[2])] + dict[parseInt(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);

写一个函数,参数为时间对象毫秒数的字符串格式,返回值为字符串。假设参数为时间对象毫秒数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(timestr){
    var nowdate= Date.now()
    var offset=(nowdate-timestr)/1000/60
    if(offset<1){
        return "刚刚"
    }else if(offset>=1 && offset<60){
        return parseInt(offset)+"分钟前"
    }else if(offset>=60 && offset<24*60){
        return parseInt(offset/60)+"小时前"
    }else if(offset>=24*60 && offset<30*24*60){
        return parseInt(offset/60/24)+"天前"
    }else if(offset>=30*24*60 && offset<12*30*24*60){
        return parseInt(offset/60/24/30)+"个月前"
    }else {
        return parseInt(offset/60/24/30/12)+"年前"
    }
}

你可能感兴趣的:(JS:Math、数组和date)