JS 面试知识学习历程(第五天) -- 其他知识

Chapter5 JS基础知识(下2) — 其他知识

这是我自己的学习过程总结,如果有什么写的不清楚的地方,欢迎大家交流、批评、提问。可以在这里评论,也可以在github上提问,谢谢大家

题目

  • 获取 2017-06-10 格式的日期
  • 获取随机数,要求是长度一致的字符串格式
  • 写一个能遍历对象和数组的通用 forEach 函数

知识点

  • 日期
  • Math
  • 数组API
  • 对象API

日期

Date.now() // 获取当前时间毫米数 1970年至今
var dt = new Date()
dt.getTime() //获取毫米数
dt.getFullYear() //年
dt.getMonth() //月 (0-11)
dt.getDay() // 星期几 (0-6)星期日-星期六
dt.getDate() //日 (1-31)
dt.getHours() // 小时 (0-23)
dt.getMinutes() // 分钟(0-59)
dt.getSeconds()  //秒 (0-59)

Math

  • 获取随机数 Math.random() (放在url后面,用于清除缓存)

数组API

  • forEach 遍历所有元素

    var arr = [1,2,3]
    arr.forEach(function (item, index) {  // item是每一个元素,index是数组中的顺序
    console.log(index, item)
    })
  • every 判断所有元素是否都符合条件

    var arr = [1,2,3]
    var result = arr.every(function (item, index) {
    if(item < 4) {
      return true
    }
    })
    console.log(result)  //true
  • some 判断是否至少一个元素符合条件

    var arr = [1,2,3]
    var result = arr.some(function (item, index) {
    if(item < 2) {
      return true
    }
    })
    console.log(result)  //true
  • sort 排序

    var arr = [1,4,2,3,5]
    var arr2 = arr.sort(function (a, b) {
    // 从小到大排序
    return a - b
    // 从大到小排序
    // return b - a
    })
    console.log(arr2)
  • map 对元素重新组装,生成新数组

    var arr = [1,2,3,4]
    var arr2 = arr.map(function(item, index) {
    // 将元素重新组装,并返回
    return '<b>' + item + '</b>'
    })
    console.log(arr2)
  • filter 过滤符合条件的元素

    var arr = [1,2,3]
    var arr2 = arr.filter(function (item, index) {
    // 通过某条件过滤数组
    if (item >= 2) {
      return true
    }
    })
    console.log(arr2) // [2,3]

对象API

  • for in

    var obj = {
    x: 100,
    y: 200,
    z: 300
    }
    var key
    for (key in obj) {
    // 注意这里的hasOwnProperty,在讲原型链的时候讲过了
    if (obj.hasOwnProperty(key)) {
      console.log(key, obj[key])
    }
    }
    // x 100
    // y 200
    // z 300

解答

  • 获取2017-06-10格式的日期

    function formatDate(dt) {
    if(!dt) {
      dt = new Date()
    }
    var year = dt.getFullYear()
    var month = dt.getMonth() + 1
    var date = dt.getDate()
    if(month < 10) {
      month = '0' + month
    }
    if(date < 10) {
      date = '0' + date
    }
    return year +  '-'  + month + '-' + date
    }
    var dt = new Date()
    var formatDate = formatDate(dt)
    console.log(formatDate)
  • 获取随机数,要求是长度一致的字符串格式

    var random = Math.random()
    var random = random + '0000000000'  // 后面加上10个零
    var random = random.slice(0, 10)
    console.log(random)
  • 写一个能遍历对象和数组的通用forEach函数

    function forEach(obj, fn) {
    var key
    if (obj instanceof Array) {
      obj.forEach(function (item, index) {
        fn(index, item)
      })
    } else {
      for (key in obj) {
        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)
    })

gitbub地址 持续更新 可下载

https://github.com/zust-hh/JavaScript_interviewing_knowledge_learning

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值