Math数组Date

一、Math

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

Math.random();//返回一个大于等于0,小于1的伪随机数。

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

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

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

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

function getRandStr(len){
      var dist='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXZY';
      var str='';
      for(var i=0;i

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

  function getRandIP(){
     var arr=new Array(4);
      for(var i=0;i

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

 function getRandStr(){
        var dist='0123456789abcdef';
        var str='#';
        for(var i=0;i<6;i++){
        var index=Math.floor(Math.random()*16);
        var  ch=dist[index];
        str+=ch;
   }
     return str;
   }
    var s=getRandStr();
    console.log(s);

二、数组

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

push():将一个或多个元素添加到数组的末尾,并返回数组的新长度。
如:
var numbers = [1, 2, 3];
numbers.push(4);
console.log(numbers); // [1, 2, 3, 4]
pop():从数组中删除最后一个元素,并返回该元素的值。此方法更改数组的长度。
let a = [1, 2, 3];
a.length; // 3
a.pop(); // 3
console.log(a); // [1, 2]
a.length; // 2
shift():从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度
var a = [1, 2, 3];
var b = a.shift();
console.log(a); // [2, 3]
console.log(b); // 1
unshift():方法将一个或多个元素添加到数组的开头,并返回新数组的长度
var a = [1, 2, 3];
a.unshift(4, 5);
console.log(a);// [4, 5, 1, 2, 3]
join():将数组或类数组对象的所有元素连接到一个字符串中。join() 方法,不会改变数组!
var a= ['Wind', 'Rain', 'Fire'];
a.join(); //默认为 ",", 'Wind,Rain,Fire'
a.join(""); //'Wind-Rain-Fire'
a.join("-"); //'Wind-Rain-Fire'
console.log(a);// ['Wind', 'Rain', 'Fire']
splice():方法通过删除现有元素和/或添加新元素来更改数组的内容。
array.splice(start, howmany, item1, item2, ...)
splice() 方法会直接对数组进行修改。
var myFish = ["angel", "clown", "mandarin", "surgeon"];
var removed = myFish.splice(2, 0, "drum");//从第 2 位开始删除 0 个元素,插入 "drum"
console.log(removed);//["angel", "clown", "drum", "mandarin", "surgeon"]

用 splice函数分别实现push、pop、shift、unshift方法

 var Obj={
      push: function push(arr,item){
          arr.splice(arr.length,item);
          return arr
      },
      pop:  function pop(arr){
          arr.splice(arr.length-1,1);
          return arr;
      },
      shift: function shift(arr){
          arr.splice(0,1);
          return arr;
      },
      unshift:function unshift(arr,index,item){
          arr.splice(0,0,item);
          return arr;
      }
  };
    var a=Obj.push([1,2,3],3);
    console.log(a);//[1, 2, 3]
    var b=Obj.pop([1,2,3]);
    console.log(b);//[1, 2]
    var c=Obj.shift([1,2,3]);
    console.log(c);//[2, 3]
    var d=Obj.unshift([1,2],3);
    console.log(d);//[3, 1, 2]
//把题目理解错误了

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

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

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

function filterPositive(arr){
    var newArr=[];
    for(var i=0;i0&&typeof arr[i]==='number'){
            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(time){
         var endTime = new Date(time).getTime();
        var nowTIime=new Date().getTime();
        var offsetTime=parseInt((endTime-nowTIime)/1000);//秒
        var days=parseInt(offsetTime/(60*60*24));
        var hours=parseInt((offsetTime/(60*60)%24));
        var minites=parseInt(offsetTime/60%60);
        var seconds=parseInt(offsetTime%60);
           days=days<10?"0"+days:days;
          hours=hours<10?"0"+hours:hours;
          minites=minites<10?"0"+minites:minites;
          seconds=seconds<10?"0"+seconds:seconds;
        return "距6月3日还有"+days+"天"+hours+"小时"+minites+"分"+seconds+"秒";

   }
  var str = getChIntv("2017-06-03 00:00:00");
  console.log(str);  // 距6月3日还有00天02小时15分59秒

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

 function getCh(str) {
        var newStr=str.split("-");//["2017", "08", "09"]
         console.log(newStr);
          var years=newStr[0];
          var mouth=newStr[1];
          var days=newStr[2];
          var dict=["零","一","二","三","四","五","六","七","八","九","十","十一","十二","十三","十四","十五","十六","十七","十八","十九","二十","二十一","二十二","二十三","二十四","二十五","二十六","二十七","二十八","二十九","三十","三十一"];
           var chYears=dict[parseInt(years[0])]+dict[parseInt(years[1])]+dict[parseInt(years[2])]+dict[parseInt(years[3])]+"年";
           var chMouth=dict[parseInt(mouth)+'']+"月";
           var chDays=dict[parseInt(days)+'']+"日";
           var newDate=[];
           newDate.unshift(chYears,chMouth,chDays);
           var res=newDate.join("");
           return res;
   }
   var str="2017-08-09";
   var a = getCh(str);
   console.log(a);//二零一七年八月九日

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 nowTime=new Date().getTime();//当前时间距离1970年的毫秒数
    var startTime=new Date(time).getTime();
    var t=parseInt(nowTime-startTime)/1000;//秒
      if(t/60<1){
         return "刚刚"
     }else if((t>=60)&&(t<=3600)){
         return parseInt(t/60)+"分钟前";
     }else if(t>=(60*60)&&(t<=(60*60*24))){
         return parseInt(t/3600%24)+"小时前";
     }else  if((t>=(60*60*24))&&(t<=(60*60*24*30))){
          return parseInt(t/(60*60*24))+"天前";
      }else if((60*60*24*30)=(60*60*24*365)){
          return parseInt(t/(60*60*24*365))+"年前";
      }
}
var str = friendlyDate( '2017-06-03 10:30:00' ); 
console.log(str);//  30分钟前,写完这题的时间是:2017-06-03 11:00:00
var str2 = friendlyDate('2017-06-01 00:00:00');
console.log(str2); //2天前
var str1=friendlyDate('2017-06-03 11:02:40');
console.log(str1);//刚刚
var str3=friendlyDate('2017-05-01 00:00:00');
console.log(str3);//1个月前
var str4=friendlyDate('2014-05-01 00:00:00');
console.log(str4);//3年前

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