进阶六 Math 数组 Date

Math任务

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

  var min = 7
  var max = 11
  function getRandom(min,max){
      return Math.floor(Math.random()*(max-min)+ min);
  }
  var a = getRandom(min,max)
  console.log(a)

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

  var min = 4
  var max = 7
  function getRandom(min,max){
    return Math.floor(Math.random()*(max-min+1)+ min);
    }
  var a = getRandom(min,max)
  console.log(a)

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

    var dict =       "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTU    VWXYZ"
var newstr = ''
function getRandStr(n){
for(var i = 1;i < n; i++){
    var a = Math.floor(Math.random()*62)
    newstr += dict[a]
}
  return newstr
}
var str = getRandStr(10); 
console.log(str)

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

function getRandIP(){
var ip = []
for(var i= 0;i < 4 ;i++){
    ip[i] = Math.floor(Math.random()*256)
}
return ip.join(".")
}
var ip = getRandIP()
console.log(ip)

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

function getRandColor(){
  var dict = "0123456789abcdef"
var ip = "#"
for(var i= 0;i < 6 ;i++){
    ip += dict[Math.floor(Math.random()*16)]
}
return ip
}
var color = getRandColor()
console.log(color)

数组任务

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

  • push()方法用于将值添加进数组,返回数组长度
  • pop()方法删除数组最后一个元素,返回被删除的元素
  • shift()方法删除数组第一个元素,返回被删除的元素
  • unshift()方法在数组开头添加一个或多个值,返回数组长度
  • join()方法以指定分隔符将数组的值链接成字符串,返回生成的新字符串,()内接受指定分隔符参数,若为空字符,则元素直接联结成字符串
  • splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
    arrayObject.splice(index,howmany,item1,.....,itemX)
    index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
    howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。
    item1, ..., itemX 可选。向数组添加的新项目。
  • 用splice实现push
    arrayObject.splice(arrayObject.length, 0, 22)
  • 用splice实现pop
    arrayObject.splice(arrayObject.length, 1)
  • 用splice实现shift
    arrayObject.splice(0, 1)
  • 用splice实现unshift
    arrayObject.splice(0, 0,1)

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

function squareArr(arr){
var newarr = []
for(var i = 0;i < 3; i++){
newarr[i] = arr[i]*arr[i]
}
return newarr
}
var arr = [2, 4, 6]
squareArr(arr)
console.log(squareArr(arr))

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

function filterPositive(arr){
function callback(element){
        return element > 0 && typeof element ==="number"
}
return arr.filter(callback)
}
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(time){
    var newtime = new Date()
    var oldtime = new Date(time)
    var total = newtime - oldtime
    var day = Math.floor(total / (1000*60*60*24))
    var hour = Math.floor((total % (1000*60*60*24)) / (1000*60*60))
    var minute = Math.floor(((total % (1000*60*60*24)) % (1000*60*60)) / (1000*60))
    var chtime = ""
    return chtime = "距离"+ time + "还有"+day + "天" + hour + "小时"+ minute + "分" 
}
var str = getChIntv("2017-02-08");
console.log(str); // 距除夕还有 20 天 15 小时 20 分 10 秒

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

  function getChsDate(str){
    var dateArr = str.split("-"),
 yearStr = dateArr[0],
 monthStr = dateArr[1],
 dayStr = dateArr[2],
 dict = "零,一,二,三,四,五,六,七,八,九,十,十一,十二,十三,十四,十五,十六,十七,十八,十九,二十,二十一,二十二,二十三,二十四,二十五,二十六,二十七,二十八,二十九,三十,三十一";
  dict = dict.split(",")
  var chYearStr = dict[parseInt(yearStr[0])] + dict[parseInt(yearStr[1])] +         dict[parseInt(yearStr[2])] + dict[parseInt(yearStr[3])] + "年",
  chMonthStr = dict[parseInt(monthStr)] + "月",
  chDayStr = dict[parseInt(dayStr)] + "日";
  return chYearStr + chMonthStr + chDayStr
}
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个月)

        var total = Date.now() - parseInt(time)
    if(total < 600000){
    return "刚刚"
}
if(total >=60000 && total < 60000*60){
    return "3分钟前"
}
if(total >=60000 && total < 60000*60*24){
    return "8小时前"
}
if(total >=60000*60*24 && total < 60000*60*24*30){
    return "3天前"
}
if(total >=60000*60*24*30 && total < 60000*60*24*30*12){
    return "2个月前"
}
if(total >=60000*60*24*30*12){
    return "8年前 "
}
  }
  var str = friendlyDate( '1495192760000' ) 
  var str2 = friendlyDate('1495102762685') 
  console.log(str)
  console.log(str2)

你可能感兴趣的:(进阶六 Math 数组 Date)