【牛客刷题】前端--JS篇(二)

简介: 【牛客刷题】前端--JS篇(二)

题1:判断版本

微信图片_20221012221308.png


题解

<!DOCTYPE html>
<html>
    <head>
        <meta charset=utf-8>
    </head>
    <body>
        <script type="text/javascript">
        const _shouldUpdate = (oldVersion, newVersion) => {
           let oldversion = parseInt(oldVersion.split('.').join(''))
           let newversion = parseInt(newVersion.split('.').join(''))
           return newversion > oldversion
      }
        </script>
    </body>
</html>


题2:计数器

微信图片_20221012221355.png

题解

<!DOCTYPE html>
<html>
<head>
  <meta charset=utf-8>
</head>
<body>
  <script type="text/javascript">
    const closure = () => {
      let count = 0
      return function () {
        count++
        return count
      }
    }
  </script>
</body>
</html>

题3:列表动态渲染

微信图片_20221012221445.png

题解

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
</head>
<body>
  <ul></ul>
  <script>
    var people = [
      { name: '牛油1号', id: 1, age: 20 },
      { name: '牛油2号', id: 2, age: 21 },
      { name: '牛油3号', id: 3, age: 19 },
    ]
    var ul = document.querySelector('ul');
    // 补全代码
    for (let i = 0; i < people.length; i++) {
      var txt = people[i].name + ' ' + people[i].age + '岁';
      var li = document.createElement('li');
      li.innerHTML = txt;
      ul.append(li);
    }
  </script>
</body>
</html>

题4:模板字符串

微信图片_20221012221540.png

题解

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
</head>
<body>
  <h2></h2>
  <script>
    var person = {
      level: '2',
      name: '小丽',
      registTime: '2022-09-21',
    }
    var h2 = document.querySelector('h2');
    // 补全代码
    let day = getDay(new Date(person.registTime), new Date());
    h2.innerText = `尊贵的牛客网${person.level}级用户${person.name}您好,您已经注册牛客网${day}天啦~`;
    function getDay (startTime, endTime) {
      return Math.floor((endTime.valueOf() - startTime.valueOf()) / 86400 / 1000);
    }
  </script>
</body>
</html>

题5:类继承

微信图片_20221012221621.png

思路:


在”Human“;类中添加”getName“函数

通过extends使”Chinese”类继承于“Human”类

在“Chinese”类的构造函数中可以通过super方法使“name”调用超类构造器

在“Chinese”类的构造函数中添加“age”属性

在“Chinese”类的构造函数中添加“getAge“函数

<!DOCTYPE html>
<html>
<head>
  <meta charset=utf-8>
</head>
<body>
  <script type="text/javascript">
    class Human {
      constructor(name) {
        this.name = name
        this.kingdom = 'animal'
        this.color = ['yellow', 'white', 'brown', 'black']
      }
      // 补全代码
      getName () {
        return this.name;
      }
    }
    // 补全代码
    class Chinese extends Human {
      constructor(name, age) {
        super(name);
        this.age = age;
      }
      getAge () {
        return this.age;
      }
    }
  </script>
</body>
</html>

题6:参数解析器

思路:


1、将url参数部分取出 (通过slice+lastIndexOf)拿到所有参数


2、再通过split对所有参数进行分割 (此时得到:[‘id=1’,‘salas=1000’])


3、循环split,通过数组结构获取key、value 并赋值给新对象


题解:


///

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
    </head>
    <body>
        <script>
       const _getParams = (url) => {
    var obj = {}
    let index = url.indexOf('#')
    url = index === -1 ? url : url.slice(0, index)
    if (url.indexOf('?') !== -1) {
        let i = url.indexOf("?")
        let arr = url.slice(i + 1).split('&')
        arr.forEach(function (item) {
            item = item.replace(/\=/, '&')
            let t = item.split('&')
            obj[t[0]] = t[1] !== undefined ? t[1] : null
        })
        return obj
    } else {
        return obj
    }
}
        </script>
    </body>
</html>

题7:生成页码

思路:

根据题目要求,通过参数生成页码,要求页码内容从1开始,核心步骤为:

  1. 获取”ul“标签
  2. 计算出总页数,需要向上取整
  3. 进入循环,创建”li“节点且”li“.innerText为该循环当前轮次

 4.在循环内将”li“节点插入”ul“

题解:

<!DOCTYPE html>
<html>
<head>
  <meta charset=utf-8>
</head>
<body>
  <ul id="ul">
  </ul>
  <script type="text/javascript">
    const _createPage = (allItem, pageItem) => {
      let ul = document.querySelector('#ul')
      let pageNumber = Math.ceil(allItem / pageItem)
      for (let i = 1; i <= pageNumber; i++) {
        let li = document.createElement('li')
        li.innerText = i
        ul.appendChild(li)
      }
    }
  </script>
</body>
</html>
相关文章
|
3天前
|
JavaScript 前端开发 程序员
前端原生Js批量修改页面元素属性的2个方法
原生 Js 的 getElementsByClassName 和 querySelectorAll 都能获取批量的页面元素,但是它们之间有些细微的差别,稍不注意,就很容易弄错!
|
5天前
|
JSON 前端开发 JavaScript
聊聊 Go 语言中的 JSON 序列化与 js 前端交互类型失真问题
在Web开发中,后端与前端的数据交换常使用JSON格式,但JavaScript的数字类型仅能安全处理-2^53到2^53间的整数,超出此范围会导致精度丢失。本文通过Go语言的`encoding/json`包,介绍如何通过将大整数以字符串形式序列化和反序列化,有效解决这一问题,确保前后端数据交换的准确性。
19 4
|
15天前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
|
15天前
|
移动开发 前端开发 JavaScript
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
于辰在大学期间带领团队参考网易游戏官网的部分游戏页面,开发了一系列前端实训作品。项目包括首页、2021校园招聘页面和明日之后游戏页面,涉及多种特效实现,如动态图片切换和人物聚合效果。作品源码已上传至CSDN,视频效果可在CSDN预览。
24 0
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
|
20天前
|
JavaScript 前端开发 开发者
前端框架对比:Vue.js与Angular的优劣分析与选择建议
【10月更文挑战第27天】在前端开发领域,Vue.js和Angular是两个备受瞩目的框架。本文对比了两者的优劣,Vue.js以轻量级和易上手著称,适合快速开发小型到中型项目;Angular则由Google支持,功能全面,适合大型企业级应用。选择时需考虑项目需求、团队熟悉度和长期维护等因素。
28 1
|
20天前
|
JavaScript 前端开发 API
前端框架对比:Vue.js与Angular的优劣分析与选择建议
【10月更文挑战第26天】前端技术的飞速发展让开发者在构建用户界面时有了更多选择。本文对比了Vue.js和Angular两大框架,介绍了它们的特点和优劣,并给出了在实际项目中如何选择的建议。Vue.js轻量级、易上手,适合小型项目;Angular结构化、功能强大,适合大型项目。
17 1
|
23天前
|
前端开发 JavaScript UED
"前端小技巧大揭秘:JS如何将后台时间戳秒变亲切小时前、分钟前,让用户秒懂,提升互动体验!"
【10月更文挑战第23天】在Web开发中,将后台返回的时间戳转换为“小时前”、“分钟前”、“刚刚”等友好的时间描述是常见需求。本文介绍如何用JavaScript实现这一功能,通过计算当前时间和时间戳的差值,返回相应的描述,提升用户体验。
26 1
|
30天前
|
前端开发 JavaScript 安全
JavaScript前端开发技术
JavaScript(简称JS)是一种广泛使用的脚本语言,特别在前端开发领域,它几乎成为了网页开发的标配。从简单的表单验证到复杂的单页应用(SPA),JavaScript都扮演着不可或缺的角色。
20 3
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
97 2
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的小区物流配送系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的小区物流配送系统附带文章源码部署视频讲解等
124 4
下一篇
无影云桌面