【JavaScript】巩固JS开发中十个常用功能/案例(1-10)

简介: 【JavaScript】巩固JS开发中十个常用功能/案例(1-10)

前言

博主发现了一个超级好用的刷题、面试、求职的网站:牛客网,它不仅具有公司真题专项练习面试题库在线编程等功能,还具有非常强大的AI模拟面试功能,简直是求职者的福音!

牛客网里的题库还是比较全面的,无论你是前端还是后端,都能在牛客网上找到适合自己的题,赶快点击链接去注册登录吧:点我进入牛客网

本篇文章所有示例来自于牛客网题库/在线编程/JS篇(1-10题),这些都是前端开发中常用的功能,借此记录一下刷题过程,巩固基础

1、绘制直角三角形

补全JavaScript代码,要求在页面上渲染出一个直角三角形,三角形换行要求使用"br"实现。三角形如下:

*
**
***

解:

    <script>
        var triangle = document.querySelector('.triangle');
        // 补全代码
        let htm = '';
        for (let i = 1; i <= 3; i++) {
            for (let j = 0; j < i; j++) {
                htm += '*';
            }
            htm += '<br>';
        }
        triangle.innerHTML = htm;
    </script>

2、获取文件扩展名

补全JavaScript代码,要求以字符串的形式返回文件名扩展名,文件名参数为"filename"。

注意:返回的扩展名格式为 .扩展

解:

    <script>
        const _getExFilename = (filename) => {
            // 补全代码
            const arr = filename.split(".")
            return '.' + arr[arr.length - 1]
        }
    </script>

将字符串通过split方法以.分割成数组,数组最后一位既是扩展名称

3、添加分隔符

补全JavaScript代码,要求返回参数数字的千分位分隔符字符串。

输入:_comma(12300)
输出:'12,300'

解:

    <script type="text/javascript">
        function _comma(number) {
            // 补全代码
            if (number < 1000) {
                return number + '';
            };
            return _comma(parseInt(number / 1000)) + ',' + number % 1000
        }
    </script>

举个例子:

number为14360时,number / 1000为14.36,parseInt(number / 1000)为14,_comma(parseInt(number / 1000))'14' number % 1000为360,最终return的结果为'14,360'

4、单向绑定

补全JavaScript代码,要求每当id为"input"的输入框值发生改变时触发id为"span"的标签内容同步改变。
注意: 必须使用DOM0级标准事件(onchange

解:

    <body>
        <input id="input" type="text" />
        <span id="span"></span>

        <script type="text/javascript">
            // 补全代码
            const inp=document.getElementById('input');
            const spa=document.getElementById('span');
            inp.onchange=()=>{
                spa.innerText=inp.value
            }
        </script>
    </body>

5、快熟创建指定长度数组

请补全JavaScript代码,要求返回一个长度为参数值并且每一项值都为参数值的数组。
注意:请勿直接使用for/while

解:

      <script type="text/javascript">
          const _createArray = (number) => {
              // 补全代码
              return new Array(number).fill(number)
          }
      </script>
  • new Array(number)表示生成有number个元素的数组,元素内容默认为空属性:

在这里插入图片描述

  • fill() 方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。点击查看详情

    arr.fill(value, start, end)
    // - `value` 用来填充数组元素的值。
    
    // - `start` 可选 起始索引,默认值为 0。
    
    // - `end` 可选 终止索引,默认值为 this.length。

6、判断版本

请补全JavaScript代码,该函数接收两个参数分别为旧版本、新版本,当新版本高于旧版本时表明需要更新,返回true,否则返回false
注意:

  1. 版本号格式均为"X.X.X"
  2. X∈[0,9]
  3. 当两个版本号相同时,不需要更新

解:

    <script type="text/javascript">
        const _shouldUpdate = (oldVersion, newVersion) => {
            // 补全代码
            const oldNum=oldVersion.split('.').join('')+0;
            const newNum=newVersion.split('.').join('')+0;
            return newNum>oldNum
        }
    </script>

版本号格式均为"X.X.X",且x为0-9的数字,直接可以对其通过split('.')分割成数组后为[x,x,x],再进一步使用join('')将数组转换成字符串为'xxx',加个0转换成数字number类型的,之后进行比较即可。

7、无重复数组

请补全JavaScript代码,实现一个函数,要求如下:

  1. 根据输入的数字范围[start,end]和随机数个数"n"生成随机数
  2. 生成的随机数存储到数组中,返回该数组
  3. 返回的数组不能有相同元素

注意:

  1. 不需要考虑"n"大于数字范围的情况
输入:getUniqueNums(2,10,4)
输出:[4,6,2,8]

解:

     <script>
         const _getUniqueNums = (start,end,n) => {
             // 补全代码
             const set=new Set();
             while(set.size<n){
                 const num=parseInt(Math.random()*(end-start)+start);
                 set.add(num)
             };
             return [...set]
         }
     </script>

利用ES6Set数据结构,保证其中的数据不重复,通过Setsize属性获取其元素个数与n进行判断,少于指定元素时就生成随机数,然后通过add方法向Set中添加元素,之后返回时通过解构将Set结构转换成数组。

点此查看Set详情

8、数组排序

请补全JavaScript代码,根据预设代码中的数组,实现以下功能:

  1. 列表只展示数组中的name属性
  2. 实现点击"销量升序"按钮,列表内容按照销量升序重新渲染
  3. 实现点击"销量降序"按钮,列表内容按照销量降序重新渲染

注意:

  1. 必须使用DOM0级标准事件(onclick

解:

<body>
    <button class='up'>销量升序</button>
    <button class='down'>销量降序</button>
    <ul></ul>

    <script>
        var cups = [
            { type: 1, price: 100, color: 'black', sales: 3000, name: '牛客logo马克杯' },
            { type: 2, price: 40, color: 'blue', sales: 1000, name: '无盖星空杯' },
            { type: 4, price: 60, color: 'green', sales: 200, name: '老式茶杯' },
            { type: 3, price: 50, color: 'green', sales: 600, name: '欧式印花杯' }
        ]
        var ul = document.querySelector('ul');
        var upbtn = document.querySelector('.up');
        var downbtn = document.querySelector('.down');
        // 补全代码
        function showList(list) {
            let str = '';
            list.forEach(item => {
                str += `<li>${item.name}</li>`
            })
            ul.innerHTML = str
        };
        showList(cups);
        upbtn.onclick = function () {
            cups.sort((next, prev) => next.sales - prev.sales);
            showList(cups);
        };
        downbtn.onclick = function () {
            cups.sort((next, prev) => prev.sales - next.sales);
            showList(cups);
        };
    </script>
</body>

点此查看数组排序sort方法详情

9、新数组

请补全JavaScript代码,该函数接受两个参数分别为数组、索引值,要求在不改变原数组的情况下返回删除了索引项的新数组。

解:

    <script type="text/javascript">
        const _delete = (array,index) => {
            // 补全代码
            return array.filter((_,i)=>i!==index)
        }
    </script>

点此查看数组过滤filter方法详情

10、计数器

请补全JavaScript代码,要求每次调用函数"closure"时会返回一个新计数器。每当调用某个计数器时会返回一个数字且该数字会累加1。
注意:

  1. 初次调用返回值为1
  2. 每个计数器所统计的数字是独立的

解:

   <script type="text/javascript">
       const closure = () => {
           // 补全代码
           let num=1;
           return ()=>num++;
       };
   </script>

这题主要考试的就是JS的闭包,点击查看闭包详情

结语

这篇文章内容非常简单,主要是为了巩固自己的基础,正可谓基础不牢,地动山摇!!!

这篇文章的内容都出自于牛客网的JS篇题库,由此可见牛客网的JS题库还是非常贴合实际的,在写的过程中自己查漏补缺,收获了很多。

身为前端,之前的我非常迷茫,不知道怎么刷题,后端常刷的算法题又不太适合我,直到发现牛客网,才结束这一现状!牛客网里的题真的是对前端太友好了,强烈将牛客网推荐给大家!

相关文章
|
9天前
|
Web App开发 JavaScript 前端开发
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念,包括事件驱动、单线程模型和模块系统;探讨其安装配置、核心模块使用、实战应用如搭建 Web 服务器、文件操作及实时通信;分析项目结构与开发流程,讨论其优势与挑战,并通过案例展示 Node.js 在实际项目中的应用,旨在帮助开发者更好地掌握这一强大工具。
30 1
|
2月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
691 1
|
9天前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
25 2
|
15天前
|
JavaScript 前端开发 测试技术
探索现代JavaScript开发的最佳实践
本文探讨了现代JavaScript开发中的最佳实践,涵盖ES6+特性、现代框架使用、模块化与代码分割、测试驱动开发、代码质量与性能优化、异步编程、SPA与MPA架构选择、服务端渲染和静态站点生成等内容,旨在帮助开发者提升代码质量和开发效率。
|
24天前
|
Web App开发 存储 JavaScript
深入浅出Node.js后端开发
【10月更文挑战第31天】本文将引导你进入Node.js的奇妙世界,探索其如何革新后端开发。通过浅显易懂的语言和实际代码示例,我们将一起学习Node.js的核心概念、搭建开发环境,以及实现一个简单但完整的Web应用。无论你是编程新手还是希望拓展技术的开发者,这篇文章都将为你打开一扇通往高效后端开发的大门。
|
19天前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端开发
【10月更文挑战第36天】本文将引导您探索Node.js的世界,通过实际案例揭示其背后的原理和实践方法。从基础的安装到高级的异步处理,我们将一起构建一个简单的后端服务,并讨论如何优化性能。无论您是新手还是有经验的开发者,这篇文章都将为您提供新的视角和深入的理解。
|
20天前
|
运维 监控 JavaScript
鸿蒙next版开发:分析JS Crash(进程崩溃)
在HarmonyOS 5.0中,JS Crash指未处理的JavaScript异常导致应用意外退出。本文详细介绍如何分析JS Crash,包括异常捕获、日志分析和典型案例,帮助开发者定位问题、修复错误,提升应用稳定性。通过DevEco Studio收集日志,结合HiChecker工具,有效解决JS Crash问题。
38 4
|
24天前
|
JavaScript
js实现简洁实用的网页计算器功能源码
这是一款使用js实现简洁实用的网页计算器功能源码。可实现比较基本的加减乘除四则运算功能,界面简洁实用,是一款比较基本的js运算功能源码。该源码可兼容目前最新的各类主流浏览器。
24 2
|
25天前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端开发
【10月更文挑战第30天】本文将通过一个Node.js的简单示例,引导你进入Node.js的世界。我们将从基础概念讲起,然后一步步深入到代码实现,最后总结Node.js在后端开发中的优势和应用场景。无论你是前端开发者还是后端新手,这篇文章都将为你打开一扇了解Node.js的大门。
46 2
|
1月前
|
开发框架 JavaScript 前端开发
HarmonyOS UI开发:掌握ArkUI(包括Java UI和JS UI)进行界面开发
【10月更文挑战第22天】随着科技发展,操作系统呈现多元化趋势。华为推出的HarmonyOS以其全场景、多设备特性备受关注。本文介绍HarmonyOS的UI开发框架ArkUI,探讨Java UI和JS UI两种开发方式。Java UI适合复杂界面开发,性能较高;JS UI适合快速开发简单界面,跨平台性好。掌握ArkUI可高效打造符合用户需求的界面。
91 8