【牛客刷题】前端--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>
相关文章
|
8月前
|
JavaScript 前端开发 API
|
8月前
|
前端开发 JavaScript 数据可视化
58K star!这个让网页动起来的JS库,前端工程师直呼真香!
Anime.js 是一款轻量级但功能强大的JavaScript动画引擎,它能够以最简单的方式为网页元素添加令人惊艳的动效。这个项目在GitHub上已经获得58,000+星标,被广泛应用于电商页面、数据可视化、游戏开发等场景。
299 8
|
8月前
|
JavaScript 前端开发 容器
|
8月前
|
JavaScript 前端开发
|
8月前
|
存储 JavaScript 前端开发
|
8月前
|
移动开发 JavaScript 前端开发
|
9月前
|
资源调度 JavaScript 前端开发
前端开发必备!Node.js 18.x LTS保姆级安装教程(附国内镜像源配置)
本文详细介绍了Node.js的安装与配置流程,涵盖环境准备、版本选择(推荐LTS版v18.x)、安装步骤(路径设置、组件选择)、环境验证(命令测试、镜像加速)及常见问题解决方法。同时推荐开发工具链,如VS Code、Yarn等,并提供常用全局包安装指南,帮助开发者快速搭建高效稳定的JavaScript开发环境。内容基于官方正版软件,确保合规性与安全性。
7827 23
|
8月前
|
存储 JavaScript 前端开发
|
8月前
|
JavaScript 前端开发
|
8月前
|
JavaScript 前端开发

热门文章

最新文章

  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
  • 10
    Javascript 文件命名规范
  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
    539
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    211
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    208
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    152
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    257
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    375
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    166
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    105
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    176
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    241