• 牛客JS题库


    1.直角三角形

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

    1. <div class="triangle"></div>
    2. <script>
    3. var triangle = document.querySelector('.triangle');
    4. var str = '';
    5. for (var i = 0; i < 3; i++) {
    6. for (var j = 0; j <= i; j++) {
    7. str += "*"
    8. }
    9. str += '</br>'
    10. }
    11. triangle.innerHTML = str;
    12. </script>

    2.文件扩展名

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

    1. <!-- 以字符串的形式返回文件名扩展名,文件名参数为filename -->
    2. <script>
    3. const _fetExFilename = (filename) => {
    4. // 1. lastIndexOf获取最后一个“.”符号的位置;
    5. // 2.然后通过slice截取index(包括)之后的字符串。
    6. var index = filename.lastIndexOf('.');
    7. return filename.slice(index);
    8. }
    9. </script>

    slice与splice的区别?

    slice(start,end):返回一个新数组,包含从start到end(不包含该元素)的数组元素。该方法不会改变原数组,而是返回一个子数组。

    splice():该方法向或者从数组中添加或者删除项目,返回被删除的项目。该方法会改变原数组。

    3.千分位

    1. <script>
    2. function _comma(number) {
    3. if (number < 1000) {
    4. return number.toString();
    5. } else {
    6. //递归拼接
    7. return _comma(parseInt(number / 1000)) + ',' + _comma(number % 1000);
    8. }
    9. }
    10. </script>

     4.单向监听

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

    1. <input id="input" type="text">
    2. <span id="span"></span>
    3. <script>
    4. var input = document.getElementById('input');
    5. var span = document.getElementById('span');
    6. input.onchange = function () {
    7. span.innerText = input.value;
    8. }
    9. </script>

    5.创建数组

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

    1. const _createArray = (number) => {
    2. var arr = new Array(number);
    3. return arr.fill(number);
    4. }

    6.判断版本

    请补全JavaScript代码,该函数接收两个参数分别为旧版本、新版本,当新版本高于旧版本时表明需要更新,返回true,否则返回false。
    注意:
    1. 版本号格式均为"X.X.X"
    2. X∈[0,9]
    3. 当两个版本号相同时,不需要更新

    1. const _shouldUpdate = (oldVersion, newVersion) => {
    2. var oldVersion = parseInt(oldVersion.split('.').join(''));
    3. var newVersion = parseInt(newVersion.split('.').join(''));
    4. return newVersion > oldVersion;
    5. }

    7.创建无重复数组

    请补全JavaScript代码,实现一个函数,要求如下:
    1. 根据输入的数字范围[start,end]和随机数个数"n"生成随机数
    2. 生成的随机数存储到数组中,返回该数组
    3. 返回的数组不能有相同元素
    注意:不需要考虑"n"大于数字范围的情况

    1. <script>
    2. const _getUniqueNums = (start,end,n) => {
    3. // 补全代码
    4. var arr=[];
    5. while(arr.length<n){
    6. let val=Math.floor(Math.random()*(end-start+1)+start);
    7. if(!arr.includes(val))
    8. arr.push(val)
    9. }
    10. return arr;
    11. }
    12. </script>

    8.数组排序

    请补全JavaScript代码,根据预设代码中的数组,实现以下功能:
    1. 列表只展示数组中的name属性
    2. 实现点击"销量升序"按钮,列表内容按照销量升序重新渲染
    3. 实现点击"销量降序"按钮,列表内容按照销量降序重新渲染
    注意: 必须使用DOM0级标准事件(onclick)

    1. <button class='up'>销量升序</button>
    2. <button class='down'>销量降序</button>
    3. <ul></ul>
    4. <script>
    5. var cups = [
    6. { type: 1, price: 100, color: 'black', sales: 3000, name: '牛客logo马克杯' },
    7. { type: 2, price: 40, color: 'blue', sales: 1000, name: '无盖星空杯' },
    8. { type: 4, price: 60, color: 'green', sales: 200, name: '老式茶杯' },
    9. { type: 3, price: 50, color: 'green', sales: 600, name: '欧式印花杯' }
    10. ]
    11. var ul = document.querySelector('ul');
    12. var upbtn = document.querySelector('.up');
    13. var downbtn = document.querySelector('.down');
    14. // 补全代码
    15. // 1. 对sales进行升序排列
    16. let up = function() {
    17. return cups.sort((a,b)=>{return a.sales - b.sales});
    18. }
    19. // 2. 对sales进行降序排列
    20. let down = function() {
    21. return cups.sort((a,b)=>{return b.sales - a.sales});
    22. }
    23. // 3. 遍历重新排序的cups数组,获取name属性值
    24. let getName = function() {
    25. var str = '';
    26. for(var i = 0;i < cups.length; i++) {
    27. str += '<li>' + cups[i].name + '</li>';
    28. }
    29. return str;
    30. }
    31. // 4.监听 销量升序按钮的点击事件
    32. upbtn.onclick = function() {
    33. up();
    34. ul.innerHTML = getName();
    35. }
    36. // 5.监听 销量降序按钮的点击事件
    37. downbtn.onclick = function() {
    38. down();
    39. ul.innerHTML = getName();
    40. }
    41. </script>

    9.新数组

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

    1. <script type="text/javascript">
    2. const _delete = (array,index) => {
    3. // 补全代码
    4. let newArr=[];
    5. for(let i=0;i<array.length;i++){
    6. if(array[i]!==array[index])
    7. newArr.push(array[i])
    8. }
    9. return newArr;
    10. }
    11. </script>

    10.计数器(闭包)

    请补全JavaScript代码,要求每次调用函数"closure"时会返回一个新计数器。每当调用某个计数器时会返回一个数字且该数字会累加1。
    注意:
    1. 初次调用返回值为1
    2. 每个计数器所统计的数字是独立的

    1. <script type="text/javascript">
    2. const closure = () => {
    3. // 补全代码
    4. var i=1;
    5. return function(){
    6. return i++;
    7. }
    8. }
    9. </script>

    11.列表动态渲染

    请补全JavaScript代码,将预设代码中的"people"数组渲染在页面中。实现下面的列表:

    • 牛油1号 20岁
    • 牛油2号 21岁
    • 牛油3号 19岁
    1. <body>
    2. <ul></ul>
    3. <script>
    4. var people = [
    5. { name: '牛油1号', id: 1, age: 20 },
    6. { name: '牛油2号', id: 2, age: 21 },
    7. { name: '牛油3号', id: 3, age: 19 },
    8. ]
    9. var ul = document.querySelector('ul');
    10. // 补全代码
    11. var str='';
    12. for(var i=0;i<people.length;i++){
    13. str +='<li>'+people[i].name+people[i].age+'岁'+'</li></br>';
    14. }
    15. ul.innerHTML=str;
    16. </script>
    17. </body>

    12.模板字符串

    请补全JavaScript代码,实现以下功能:
    1. 根据已有的person对象的注册时间求出距离当前时间的天数(天数向下取整)。
    2. 将获得的天数和person数据拼接成字符串,作为h2标签的内容。
    注意:使用模板字符串进行字符串拼接,字符串最终内容如:尊贵的牛客网2级用户小丽您好,您已经注册牛客网3天啦~

    1. <body>
    2. <h2></h2>
    3. <script>
    4. var person = {
    5. level: '2',
    6. name: '小丽',
    7. registTime: '2021-11-01',
    8. }
    9. var h2 = document.querySelector('h2');
    10. // 补全代码
    11. var start=new Date(person.registTime).getTime();
    12. var end=new Date().getTime();
    13. var days=Math.floor((end-start)/(24*60*60*1000));
    14. h2.innerHTML=`尊贵的牛客网${person.level}级用户${person.name}您好,您已经注册牛客网${days}天啦~`
    15. </script>
    16. </body>

    13.类继承

    请补全JavaScript代码,完成类的继承。要求如下:
    1. "Chinese"类继承于"Human"类
    2. "Human"类实现一个函数"getName",返回该实例的"name"属性
    3. "Chinese"类构造函数有两个参数,分别为"name"、"age"
    4. "Chinese"类实现一个函数"getAge",返回该实例的"age"属性

    1. <body>
    2. <script type="text/javascript">
    3. class Human {
    4. constructor(name) {
    5. this.name = name
    6. this.kingdom = 'animal'
    7. this.color = ['yellow', 'white', 'brown', 'black']
    8. }
    9. // 补全代码
    10. getName(){
    11. return this.name;
    12. }
    13. }
    14. // 补全代码
    15. class Chinese extends Human{
    16. constructor(name,age){
    17. super(name);
    18. this.age=age;
    19. }
    20. getAge(){
    21. return this.age;
    22. }
    23. }
    24. </script>
    25. </body>

  • 相关阅读:
    【Jetpack】Navigation 导航组件 ① ( Navigation 引入 | Navigation 特点 | Navigation 重要组件 | Navigation 使用流程 )
    mysql 5.7 配置文件开启本地访问
    【前端面试考点】
    FFplay文档解读-42-视频过滤器十七
    【ansible】自动化运维ansible之playbook剧本编写与运行
    JavaScript基础语法(数据类型)
    mysql统计所有分类下的数量,没有的也要展示
    全网顶级,谷歌98k架构师带你手撕spring 高级源码笔记,征服面试官的首选
    【深入浅出Nginx系列】Nginx入门?看这一篇就够了(实战篇)
    5-MySQL常用查询语句,集合函数,分组统计,分页查询
  • 原文地址:https://blog.csdn.net/weixin_47227886/article/details/125456198