蓝桥杯web组备赛

news2024/11/28 2:28:26

文章目录

  • 前言
  • js的数据结构和算法
    • find方法
  • 箭头函数注意事项
  • vue2的问题
  • 学会用检查来快速查看代码结构
  • css Transform
  • 原生dom操作有些遗忘
  • 当看不懂js逻辑的时候console.log打印看一下
  • jquery的使用
  • vue2也忘了,一个月没写就忘成狗
    • class 和 style的动态绑定
  • axios获取数据
  • 购物车问题
  • 寻找小狼人这道题
  • 最后一题——分页
  • 模拟赛1
    • 类型判断
    • 选色器
  • 总结

前言

是自己刷题的一些记录,对遇到的问题进行记录。
比赛的前几道题是比较简单的,主要是考验一些属性的问题,例如flex布局等,这几道题是必须拿下的,不耽误时间,都是修改一些小属性,看一下就知道了。
后面的题目需要自己写的代码部分就多了

自己主要的问题还是要复习,这就是备赛的意义,都写过,但是很久没写了就会遗忘。
前端算法入门 这个写的真的很好,数据结构超级重要。
这次刷题真的让我意识到,数据结构和算法的重要性,在解决问题上真的很重要,数据结构是基础,真的是基础中的基础,js的语法不好,就会出现各种问题。

在写题的过程中不要急,出现问题首先看逻辑对不对,如果逻辑是对的,那一定要注意看看语法对不对,尤其vue和jQuery这些很容易写错语法,然后还不报错,多用console.log()方法,这个就是比赛中很不爽的点,没有ide的报错,尤其因为没有vue的SFC,所以vue很难有好的响应,也导致我在考试的时候没有写出来vue的题目,整个vue单文件全黑,写的超级痛苦,没有响应啊!!!

echarts可以优先去做,因为这个最好得分,完成一个小点就可以拿分。但是在考试的时候和vue结合在一起了,第十四届比上一届要难了很多,最后也没有写出来,难受!

页面题最后写,因为最浪费时间,特别废时间,我建议这个题要么放到最后再写(因为完成度50%以上就能得到分,其它题不行),要么完成差不多后就直接去做下面的题,别死扣细节,不然吃亏的都是你!
留半个小时来写吧!第十四届直接放第一题,就五分,属于是很难受了,不值钱啊!

现在来看自己准备的还是太少了,还需要把基础准备的更加扎实!
越写这些实战题越发现代码什么的都不是最重要的,最重要的是实现的思路,一定要把实现的思路理清楚,分好步骤,并且要确保这个逻辑是对的再去写代码,很想下棋,提前想好很多步。

js的数据结构和算法

这个一定要熟练,会对解题产生完全不一样的效果

find方法

对数组的每个元素起作用,里面要写函数
find
find() 方法是一个迭代方法。它为数组中的每个元素调用提供的 callbackFn 函数,直到 callbackFn 返回一个真值。然后 find() 返回该元素并停止迭代数组。如果 callbackFn 从未返回真值,则 find() 返回 undefined。

const array1 = [5, 12, 8, 130, 44];

const found = array1.find(element => element > 10);
// callbackFn函数里面的参数可以是:item——每一个元素、index——元素序号、array——数组本身

console.log(found);
// Expected output: 12

箭头函数注意事项

箭头函数=>后面加{ }和不加效果完全不一样
箭头函数有花括号{ }与没有{ }的区别
1.有 默认无返回值 () => { } 默认没有返回值,如果需要返回值需要写return
2.没有 默认返回 () => 1 + 1 默认返回,

 const word=this.arr.find(item => {item.tip===this.tip}) //加了{}就不会返回了,如果返回需要自己加return
 const target = this.arr.find(item => item.tip === this.tip);

vue2的问题

备考需要把基础语法打牢,理解不够,就是要多写,一定要多写代码
在这里插入图片描述

这里使用的是vue2,需要注意的一点就是当我们直接修改data里的数组中的元素时,视图并不会响应式更新,如果你了解vue2的响应式原理,应该明白这是vue2响应式的一个缺陷所在,我们必须使用$set来修改触发从而引发视图更新。
也就是变量的改变都必须要用 $ set方法

clear(i) {
  this.idiom[i] = ""
  this.$set(this.idiom, i, "")
}

学会用检查来快速查看代码结构

当html内容比较多,无法快速分清结构时,可以打开页面然后用检查看html结构,自动就会帮你分好结构,看起来更清晰。
一定要理清dom结构之后再去写题目,不要一上来就莽上去,先梳理结构逻辑再上手。
在排查问题的时候要学会用检查,去看看你的css到底有没有渲染出来,最重要是看问题出在哪里才有可能解决问题。

css Transform

CSS3的Transform属性(Transform属性应用于元素的2D或3D转换。这个属性允许你将元素旋转,缩放,移动,倾斜等。)
rotate旋转: transform: rotate(角度)
这个考试的时候也考了,主要是transform比较重要吧,这个应用比价多。

原生dom操作有些遗忘

还用default来做变量名,太傻了,这个是不可以用作变量名的!
dom的操作逻辑我记得之前pink老师讲的非常详细,也很好理解,找出来复习一下。
不就是先拿到dom元素,绑定变量,然后绑定事件,执行!
这一题自己的问题是定时器的语法忘记了,真的是要记住熟练,不然忘记了就真的想不起来了,还是基础,基础,基础!

第四题灯的颜色变化好绝,都把promise干出来了,这里需要用异步操作吗?不过这样也可以写哈,毕竟是定时器,然后用await来执行promise的操作,绝了,搞复杂了属于是。
关于promise的实操和async+await的实操还需要加强!

当看不懂js逻辑的时候console.log打印看一下

也许这样逻辑就清晰了

jquery的使用

$(‘.li’+num).addClass(“active”).siblings().removeClass(“active”)
对我们获取到的指定元素添加active选中类
.siblings()为获取当前元素的所有兄弟节点
.siblings().removeClass(“active”)为移除兄弟节点的active类
对jQuery可以学一下,我觉得,可以当做一个了解
$() 就是获取元素了,'#id’就是获取id的元素 '.class’就是获取类名的元素
千万别忘了加 . 或者 # 因为是按这个来寻找元素的
.text就是元素的文本内容,和innerHtml一样

vue2也忘了,一个月没写就忘成狗

绝,还是要多写才能不忘记。
要用好vue的官方文档,如果有遗忘就去看官方文档就好,官方文档写的很好。

对aixos拿到数据的处理,也就是promise还要再理解一下,因为axios返回的是一个promise对象,还需要处理才可以拿到数组的数据

对于属性的绑定,尤其是class的绑定十分常用,但是自己总是会记错,导致操作失败很可惜。可以把类绑定切换案例单独给写下来。

class 和 style的动态绑定

自己一开始就没有理解绑定class的操作逻辑,和其他的绑定是不一样的,vue单独做了增强!
vue官方文档:Class 与 Style 绑定
Vue 专门为 class 和 style 的 v-bind 用法提供了特殊的功能增强。除了字符串外,表达式的值也可以是对象或数组。,
所以这里要记住绑定class和style时,一定要用对象,对象,对象

首先要知道的是绑定之后"   "里面必须要放的是一个对象,以及对象中字符串类型就必须要加'    '  
而不绑定的写法是class="active"  
:class="{'active':true/false }"

还有语法问题:
:class="active?'grid':'list'"
//这里active是属性,但是其他的就必须要加字符串来表示字符串,否则就无法显示成功,很绝,就因为这个卡住了。
还有其实这样也可以用v-if来写,其实我一开始也是打算用v-if的,如果是我想到的话

axios获取数据

怎么说呢,主要问题还是在拿到promise之后的处理
这里是检查是否能拿到数据,注意一定要在then里面打印res才可以看到拿到的promise
在这里插入图片描述
如果想要拿到data数组格式的,则直接在then里面res=> this.list=res.data即可。

购物车问题

这个题目真的挺有意思的,我已经想出来逻辑了,但是没a出来就很可惜。
很明显它的逻辑已经出来了,那就是在购物车这个数组中需要做一个判断,如果里面已经有了,就不要往里面加了,而不是有了依然往里面加.
自己还有一个问题就是对于js里面的语法还是不够熟练,包括箭头函数等等,所以写起来就很不方便,还是java那一套蹩脚的语法。

错误代码展示,这里之所以错就是因为了用来错误的循环结构for...in,一定要记住它是用来遍历下标/属性
  let flag=false;
                for(item in this.cartList){
                  if(item.id=goods.id){
                    flag=true; 
                    item.num++;
                  }
                }

这里真的暴露出来自己语法上的很多问题!真的不能小瞧这些问题,这些问题就暴露出你基础不严,这样的话无论是在项目还是在算法题中都会因为这个小点把自己卡死

不要再用for…in了,很呆,记住它是用来遍历对象属性的,不能用来遍历数组里的对象

for…in 是 ES5 标准, 此方法遍历数组效率低,主要是用来循环遍历对象的属性
遍历数组的缺点:数组的下标index值是数字,for-in遍历的index值"0",“1”,"2"等是字符串。
Object.defineProperty,建立的属性,默认不可枚举。

在这里用forEach和 for of都可以。

for…of是ES6新增的方法,但是for…of不能去遍历普通的对象,for…of的好处是可以使用break跳出循环。

for-of这个方法避开了for-in循环的所有缺陷
与forEach()不同的是,它可以正确响应break、continue和return语句
for-of循环不仅支持数组,还支持大多数类数组对象,例如DOM NodeList对象。
for-of循环也支持字符串遍历

在刷题的过程中也真实的发现了自己的不足,纸上得来终觉浅,绝知此事要躬行。还是要多实践才能真的明白知识,不然看永远只是看明白了

最后完整代码:

    methods:{
            addToCart(goods){
                // TODO:修改当前函数,实现购物车加入商品需求
                let flag=false;
                for(item of this.cartList){
                  //啊啊啊 被自己蠢死,都是小错误,啊啊啊啊,好气啊
                  if(item.id===goods.id){
                    flag=true; 
                    item.num++;
                  }
                }
                if(!flag){
                   goods.num = 1;
                   this.cartList.push(goods);
              }
               
                this.cartList = JSON.parse(JSON.stringify(this.cartList));
            },
            removeGoods(goods){
                // TODO:补全代码实现需求
                if(goods.num<2){
                  this.cartList.pop(goods);
                }else{ goods.num--;}
            
            }
        }

寻找小狼人这道题

最重要的就是知道数组的filter函数是干什么的,是对数组中符合条件的元素进行筛选,最后返回一个数组,并且filter()函数里的参数也是一个回调函数。

filter方法用于过滤数组成员,满足条件的成员组成一个新数组返回。
它的参数是一个函数,所有数组成员依次执行该函数,返回结果为true的成员组成一个新数组返回。
该方法不会改变原数组。

使用myarray:
    let newcardList = cardList.myarray(
          (item) => item.category == "werewolf"
        );

myarray方法:
// 返回条件为真的新数组
Array.prototype.myarray = function (cb) {
  // TODO:待补充代码
  let newArr=[];
  this.forEach(item => {
   if(cb(item)){
    newArr.push(item);
   }
  });
   return newArr;
};

filter既然是所有成员都要执行,那么就要来一个循环,让所有成员都执行,那么cb(callback回调函数)是干什么的呢,是一个用来判断的函数,当符合判断条件后就把这个元素放到新数组里,最后返回一个符合条件的新数组。

最后一题——分页

我肯定在vue学习中写过这个题目!但是这里好像不让用vue,要用原生dom来写,很绝.
如果是考试我应该就放弃了,可以看看代码做一个了解吧,太麻烦。
这一题在最后来说还是有点难度的,但是我想对那些很熟练的人来说,这些问题应该很简单,几乎是手拿把掐。
在axios拿数据时要写完整路径,就很奇怪,哪怕是在同一个文件夹,也要写绝对路径。

我觉得可以写完这套题之后看看蓝桥杯的课程,再看看es6和jQuery,我觉得做的还是挺好的。

模拟赛1

类型判断

学会了类型判断的方法:
Object.prototype.toString.call(data).slice(8,-1);
之前也已经研究过这个方法,为什么加8,-1是因为前面那一段是object, 所以要把这一段给截掉

选色器

这题我觉得最难的就在于忘记了addEventListener(),还有change方法,以及最后的setProperty方法。DOM和BOM真的要好好复习了。
我觉得无论是笔试题还是蓝桥杯,都很爱考js的BOM操作,我想BOM还是重点中的重点,好好复习。

addEventListener(event,function);

const inputs = document.querySelectorAll(".controls input");

/**
 * 上面已经选取了两个取色器
 * 请添加相应的 JS 事件处理函数并绑定到合适的事件监听器上(提示:change 事件)
 * 这样我们就可以用取色器选取颜色来生成下方的渐变色背景啦
 *  */
 const gra=document.querySelector(".gradient")
 inputs.forEach((item,index)=>{
     item.addEventListener("change",
         ()=>{
             gra.style.setProperty('--color'+[index+1],item.value);
         }
     )
 })

总结

第十四届的比赛比第十三届是要难不少的,可能是因为第一届比较简单,所以这次难度就提升上来了,整体的题目也有了一些变化。总的来说基础很重要,同时对于比赛中的内容还是要去官网多多学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/428724.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FFMpeg的整体结构

fdk-aac voaac_enc x264这些属于扩展。需要另外编译。 FFMPEG有8个常用库&#xff1a; AVUtil: 核心工具库&#xff0c;下面的许多其他模块都会依赖该库做一些基本的音视频处理操作。 AVFormat&#xff1a;文件格式和协议库&#xff0c;该模块是最重要的模块之一&#xf…

Cheaptrick算法

Cheaptrick&#xff0c;a spectral envelope estimator for high-qualityspeech synthesis 转载请注明出处&#xff01; 2015年Morise发表在SPEECH COMMUNICATION期刊上的一篇文章。 该算法目的是获得一个准确的、时间稳定的谱包络&#xff0c;采用基频(F0)&#xff0c;由F0…

【效率神器】idea使用技巧

IntelliJ IDEA&#xff08;以下简称IDEA&#xff09;的主题、字体、背景色等都是可以根据自己的喜好进行设置的&#xff0c;本小节就教大家一些常用的IDEA设置。 1. IDEA 中设置主题、字体 1.1 设置主题 点击菜单栏上的【File】–>【Settings…】–>【Appearance】–&…

Spark SQL 数据的加载和保存

目录 通用的加载和保存方式 1.1 加载数据 1.2保存数据 1.3 Parquet 1. 加载数据 2.保存数据 1.4 JSON 1.导入隐式转换 2.加载 JSON 文件 3.创建临时表 4.数据查询 1.5 CSV 通用的加载和保存方式 SparkSQL 提供了通用的保存数据和数据加载的方式。这里的通用指的是使用…

JS的防抖与节流

在进行窗口的resize、scroll&#xff0c;输入框内容校验等操作时&#xff0c;如果事件处理函数调用的频率无限制&#xff0c;会加重浏览器的负担&#xff0c;导致用户体验非常糟糕。此时我们可以采用debounce&#xff08;防抖&#xff09;和throttle&#xff08;节流&#xff0…

PP-KANBAN-看板概述

PP-KANBAN-看板概述看板概述-OverviewPUSH-PULL 原则看板的补充策略看板的系统配置看板概述-Overview 看板是1953年由Mr. Taiichi Ohno在丰田汽车公司发明的。当时&#xff0c;整个汽车行业正在通过实施丰田的“丰田生产系统”来提升管理。这个系统基于基于物料的卡片实现物资…

《2023游戏行业热点趋势报告》|Party Game游戏成为新趋势,备受消费者瞩目

过去的2022年&#xff0c;在各路重拳下&#xff0c;我们目睹了游戏行业的“焦虑”&#xff1a; 版号停发&#xff0c;版号数量缩减&#xff1b; 整个行业8年内首次下滑&#xff0c;玩家数量减少&#xff1b; 市场空间被挤压&#xff0c;买量成本激增&#xff1b; ...... 游…

【安全防御】防火墙

目录 1.什么是防火墙&#xff1f; 2.状态防火墙的工作原理&#xff1f; 3.防火墙实验 1.什么是防火墙&#xff1f; 防火墙&#xff08;英语&#xff1a;Firewall&#xff09;&#xff0c;也称防护墙&#xff0c;是由Check Point 创立者Gil Shwed于1993 年发明并引入国际互联…

“AIGC+影像”成势,美图出头?

配图来自Canva可画 众所周知&#xff0c;美图公司是业界出了名的多边形玩家&#xff0c;从牙科、区块链、盲盒到炒币等等&#xff0c;美图似乎总出现在意想不到的地方&#xff0c;而正因此它也被盖上了“不务正业”的标签。 所幸的是&#xff0c;经由去年AIGC爆火&#xff0c;…

【1026. 节点与其祖先之间的最大差值】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给定二叉树的根节点 root&#xff0c;找出存在于 不同 节点 A 和 B 之间的最大值 V&#xff0c;其中 V |A.val - B.val|&#xff0c;且 A 是 B 的祖先。 &#xff08;如果 A 的任何子节点之一为 B&…

大小端字节序存储

每个数据类型在内存中都会被分配若干个字节&#xff0c;而这些字节在内存中的存储顺序就是字节序。在计算机底层存储中&#xff0c;有两种常见的字节序&#xff1a;大端字节序和小端字节序。 大端字节序&#xff1a;高位字节在前&#xff0c;低位字节在后&#xff1b;小端字节…

藏经阁(七)有源蜂鸣器和无源蜂鸣器 解析

文章目录特征区别场景选型实战应用特征 有源蜂鸣器特征&#xff1a; 又被称为直流蜂鸣器包含了一个多谐振荡器只要额定直流电压可以在两端发出声音具有驱动控制简单价格略高 无源蜂鸣器特征&#xff1a; 又被称为交流蜂鸣器内部没有振荡器需要在两端施加特定频率的方波电压…

如何借助无线通讯终端实现组态王与PLC之间通信?

本方案是基于Modbus RTU协议下实现的1主多从自组网无线通信形式&#xff0c;主站为组态王&#xff0c;从站为两台三菱FX5U PLC。在工厂里&#xff0c;组态王和plc所处位置距离较为分散&#xff0c;重新铺设电缆线工期长&#xff0c;成本高&#xff0c;故采用日系PLC专用无线通讯…

LDMUI-001 61320946C模拟量模件的40端即直流24伏的负端接至逻辑地汇流排上

LDMUI-001 61320946C模拟量模件的40端即直流24伏的负端接至逻辑地汇流排上 ​ 八、现场接地常用注意事项 1.现场控制站 接地螺丝因机柜本体与底座间有胶皮形成绝缘&#xff0c;屏蔽地汇流排与底座间绝缘&#xff0c;现场控制站必须按规定做好接地处理。即分别接至现场控制站接…

tmall.item.sizemapping.template.update( 更新天猫商品尺码表模板 )

&#xffe5;开放平台免费API必须用户授权 更新天猫商品尺码表模板 公共参数 请求地址: 公共请求参数: 公共响应参数: ![在这里插入图片描述](https://img-blog.csdnimg.cn/d28890c8804c4a50bdd0877f0d2a9659.png请求参数 响应参数 点击获取key和secret 请求示例 响应示例 异…

PHP的垃圾回收机制(全网详解)

概念&#xff1a; PHP的垃圾回收机制是自动的&#xff0c;它通过内置的垃圾回收器(Garbage Collector)来实现。当一个PHP对象不再被引用时&#xff0c;它就成为垃圾。垃圾回收器会定期扫描内存中的所有对象&#xff0c;将没有引用的对象标记为垃圾&#xff0c;并释放它们占用的…

MDK编译过程及文件类型

编译过程 .c和.s文件通过armcc编译器转为.o 其中的code、RO、RW、ZI-data 程序运行时rom中的rw-data复制到SRAM中&#xff0c;SRAM中一般存储可读写的变量&#xff0c;所以ZI-data和RW-data的数据存储在这 经典问题 C语言的全局变量存放在哪里? C语言的全局变量存放在…

HTB-Magic

HTB-Magic信息收集80端口立足www-data -> theseustheseus -> root信息收集 80端口 主页如下。 左下角有一个Login。 抓包后尝试sql注入。 上传一个图片并保存请求。 上传的文件会在/uploads/上传文件名后缀。 只允许我们上传jpg&#xff0c;jpeg&#xff0c;png文…

C/C++每日一练(20230418)

目录 1. 搜索插入位置 &#x1f31f; 2. 最长有效括号 &#x1f31f;&#x1f31f;&#x1f31f; 3. 子集 &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏…

2023软件测试银四如何逆势涨薪,开头30秒给你想要的答案

引言 2023软件测试银四逆势涨薪&#xff0c;这是一个让人兴奋的话题。毕竟&#xff0c;在当前就业市场的背景下&#xff0c;很多人正在面临着困境&#xff0c;而能够在逆势中实现薪资上涨的机会&#xff0c;显然是非常值得我们去关注的。 那么&#xff0c;到底是什么让这些软…