JS 常见题目

本文列举了JS面试中常见的几类问题,包括获取指定格式日期、生成固定长度的随机数字符串,以及创建一个通用的forEach函数来遍历对象和数组。此外,还涉及到了JavaScript中的日期操作、Math库的使用、数组API如forEach、every、some、sort、map和filter,以及对象API的相关知识点。

JS 常见题目

  1. 获取 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)
    
  2. 获取随机数,要求是长度一致的字符串格式

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

    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, val) {
      console.log(key, val)
    })
    

知识点

  1. 日期

    Date.now() //获取当前时间毫秒数
    var dt = new Date()
    dt.getTime() //获取毫秒数
    dt.getFullYear() //年
    dt.getMonth() //月(0-11), 得到的数需要+1
    dt.getDate() //日(1-31)
    dt.getHours() //小时(0-23)
    dt.getMinutes() //分钟(0-59)
    dt.getSeconds() //秒(0-59)
    
  2. Math

    Math.random() //获取随机数
    
  3. 数组 API

    • forEach 遍历所有元素

      var arr = [1, 2, 3]
      arr.forEach(function(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)
      
    • some 判断是否有至少一个元素符合条件

      var arr = [1, 2, 3]
      var result = arr.some(function(item, index) {
        //用来判断所有的数组元素,只要有一个满足条件即可
        if (item < 2) {
          return true
        }
      })
      console.log(result)
      
    • sort 排序

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

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

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

    var obj = {
      x: 100,
      y: 200,
      z: 300
    }
    var key
    for (key in obj) {
      if (obj.hasOwnProperty(key)) {
        console.log(key, obj[key])
      }
    }
    
HTML制作一个常见问题答疑页面通常涉及以下几个步骤: 1. **创建基础结构**:首先,创建一个基本的HTML5文档结构,包括`<!DOCTYPE html>`声明、`<html>`标签、`<head>`部分和`<body>`部分。 ```html <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>常见问题解答</title> <style>/* 可选的样式表 */</style> </head> <body> </body> </html> ``` 2. **添导航**:在头部区域添一个简单的导航菜单,列出常见问题分类,如“关于我们”、“服务条款”等。 ```html <header> <nav> <ul> <li><a href="#关于我们">关于我们</a></li> <li><a href="#服务条款">服务条款</a></li> <!-- 添更多类别 --> </ul> </nav> </header> ``` 3. **编写问题列表**:每个问题应该有一个标题和详细内容,可以使用`<h2>`标签作为标题,`<p>`标签包含文字描述。 ```html <main> <section id="关于我们"> <h2>关于我们的常见问题</h2> <article> <h3>Q1: 我们是谁?</h3> <p>这里是您的组织简介...</p> </article> <!-- 添更多问题 --> </section> <!-- 其他问题分类同理 --> </main> ``` 4. **美化和响应式设计**:使用CSS调整布局,使其在各种设备上看起来良好,并且可以考虑使用Bootstrap或其他框架进行快速样式设置。 5. **脚本交互**:如果需要的话,可以添JavaScript代码来提供搜索功能、折叠隐藏某些内容等功能。 记得在每个问题或分类下方上相应的`id`或`class`,以便于链接到它们。完成上述步骤后,用户就可以浏览并找到他们关心的问题了。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值