js三座大山之外的其他知识点

一.日期

  <script>
    var dt = new Date();

    dt.getFullYear();   //返回4位数的年份
    dt.getMonth();     //返回月份,注意返回值是0-11.
    dt.getDate();     //返回月份中的天数
    dt.getDay();      //返回星期,注意返回值是0-6.
    dt.getHours();     //返回小时.
    dt.getMinutes();    //返回分钟
    dt.getSeconds();    //返回秒
    dt.getTime();       //返回毫秒数(从1970年1月1日0时开始到现在的毫秒数).
  </script>

二.Math

Math在前端中最常用的主要是Math.random()这个API.功能是获取大于等于0,小于1的随机数。

如果你希望生成任意值到任意值的随机数,公式就是这样的:

// max - 期望的最大值
// min - 期望的最小值 
parseInt(Math.random()*(max-min+1)+min,10);
Math.floor(Math.random()*(max-min+1)+min);

而在前端中主要用它清除缓存用的,比如我们频繁的去访问一个链接,但是如果服务端有缓存,这个链接可能访问不到真实的效果。所以在链接后面加一个random,每次链接都会变,每次就不一样,所以就会把缓存清空掉。

三.数组API

一般面试过程主要考的都是下面几种API

                             

  1. 遍历所有的数组所有的元素forEach()

  <script>
    var one = [4,5,6];
    one.forEach(function(item,index) {
      //item指的是数组的每一项,index指的是数组每项对应的索引值。注意:函数里面参数顺序不能改变,item必须在前面
      console.log(index,item);
      //0 4
      //1 5
      //2 6
    })
  </script>

     2.判断数组所有的元素是否都符合条件every

  <script>
    var one = [4,5,6];
    var two = one.every(function(item,index) {
      //判断数组每一项是否都大于等于4
      if (item >= 4) {
        return true;
      }
    })
    console.log(two);     //true
  </script>

    3.判断数组是否至少有一项满足条件some

  <script>
    var one = [4,5,6];
    var two = one.some(function(item,index) {
      //判断数组是否有小于等于4的项
      if (item <= 4) {
        return true;
      }
    })
    console.log(two);     //true
  </script>

     4.排序sort

  <script>
    var one = [4,1,8,6,3,2];
    var two = one.sort(function(a,b) {
      //降序排列
      return a < b;
      //降序可以返回a<b,或者b-a。升序可以返回a>b,或者a-b。
    })
    console.log(two);     //[8,6,4,3,2,1]
  </script>

    5.对数组每一项进行重新组装,生成新数组

  <script>
    var one = [4,1,8,6];
    var two = one.map(function(item,index) {
      return '<b>'+ item + '</b>';
    })
    console.log(two);     //["<b>4</b>", "<b>1</b>", "<b>8</b>", "<b>6</b>"]
  </script>

    6.过滤符合条件的元素filter

  <script>
    var one = [1,2,3];
    var two = one.filter(function(item,index){
      if (item >=2) {
        return true;
      }
    })
    console.log(two);   //[2,3]
  </script>

四.对象API

  1. 对象API主要是for in
  <script>
    var one = {
      x: 100,
      y: 200,
      z: 300
    }
    var key;
    for (key in one) {
      //key指的是one这个对象的属性名,one.hasOwnProperty(key)判断key是否是one原生的属性,而不是原型中继承过来的属性
      if (one.hasOwnProperty(key)) {
        console.log(key,one[key]);  
        // x 100
        // y 200
        // z 300
      }
    }
  </script>

问题一:获取像2017-06-18这样的格式的日期。

  <script>
    function getToday (dt) {
      if (!dt) {
        dt = new Date();
      }
      var year = dt.getFullYear();
      var month = dt.getMonth() + 1;
      var day = dt.getDate();
      if (month < 10) {
        //强制类型转换
        month = "0" + month;
      }
      if (day < 10) {
        //强制类型转换
        day = "0" + day;
      }
      return year + "-" + month + "-" + day;
    } 

    var dt = new Date();
    var todayTime = getToday(dt);
    console.log(todayTime);
  </script>

问题二:获取随机数,要求是长度一致的字符串格式。

  <script>
    var random = Math.random();
    random = random + '0000000000';   //后面加上十个0
    random = random.slice(0,10);
    console.log(random);  //0.12565789
  </script>

问题三:写一个能遍历对象和数组的forEach函数

  <script>
    function forEach(obj, fn) {
      var key;
      if (obj instanceof Array) {
        //判断是否为数组
        obj.forEach(function(item, index) {
          fn(index, item);
        });
      } else {
        //不是数组就是对象
        for (key in obj) {
          if (obj.hasOwnProperty(key)) {
            fn(key, obj[key]);
          }
        }
      }
    } 

    var arr = [1,2,3];
    //注意,这里的参数顺序变了,是为了和对象的参数顺序保持一致
    forEach(arr, function(index, item) {
      console.log(index, item);
    });
    var obj = {x: 100, y: 200};
    forEach(obj, function(key,value) {
      console.log(key, value);
    })
  </script>

                                                                                         

猜你喜欢

转载自blog.csdn.net/sinat_40697723/article/details/81257733