国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

第十三屆藍橋杯國賽 Web 前端組(大學組) 真題練習及答案解析

這篇具有很好參考價值的文章主要介紹了第十三屆藍橋杯國賽 Web 前端組(大學組) 真題練習及答案解析。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

【真題練習】分一分

考點:數(shù)組方法
思路:利用splice()方法

/**
 * @param {Object} oldArr
 * @param {Object} num
 * */
const splitArray = (oldArr, num) => {
  // TODO:請補充代碼實現(xiàn)功能
  let arr = []
  while (oldArr.length > 0) {
    arr.push(oldArr.splice(0,num))
  }
  return arr
};
module.exports = splitArray; // 檢測需要,請勿刪除


【真題練習】新鮮的蔬菜

考點:flex布局
思路:照著寫就行

/* TODO:待補充代碼 */
.box{
  display: flex;
}
#box1{
  justify-content: center;
  align-items: center;
}
#box2{
  justify-content: space-between;
}
#box2 .item:last-child{
  align-self: flex-end;
}
#box3 {
   justify-content: space-between;  /* 不加這個不能pass,有點玄學*/
} 
#box3 .item:nth-child(2){
  align-self: center;
}
#box3 .item:nth-child(3){
  align-self: flex-end;
}

【真題練習】水果消消樂

考點: DOM操作
思路:1 先做需求:隱藏開始按鈕,方格上的圖片顯示后又隱藏。 2 再做第一次點擊圖片翻轉效果。 3 做第二次點擊的邏輯判斷,若水果相同則,進行消除,加分操作,水果不同,進行隱藏,減分操作。

// TODO:請補充代碼
const startBtn = document.querySelector("#start")
const imgList = document.querySelectorAll(".img-box img")
const boxList = document.querySelectorAll(".img-box")
const scoreEle = document.querySelector("#score")

const changeDisplay = (element, status) => element.style.display = status
// 隱藏開始按鈕,方格上的圖片顯示后又隱藏
function start(){
    changeDisplay(startBtn,"none")
    // imgList轉成數(shù)組之后用forEach遍歷
    Array.from(imgList).forEach(img=>{
        changeDisplay(img,"block")
    })
    setTimeout(function(){
        Array.from(imgList).forEach(img=>{
            changeDisplay(img,"none")
        })
    },1000)
}


// 正式開始游戲
let score = 0  // 記錄分數(shù)
let num = 0  // 記錄是第一次翻牌還是第二次翻牌
let preId = ""
let preText = ""
function game(){

}
function startGame() {
    start()
    // 給每個box綁定點擊事件,不能給img元素綁定點擊事件,因為img元素是display:none
    Array.from(boxList).forEach(box=>{
        box.addEventListener("click",function(e){
            num++
            if(num === 1){
                // 如果第一次點擊
                preText = e.target.firstElementChild.alt 
                preId = e.target.id
                changeDisplay(e.target.firstElementChild,"block")
            }else{
                // 第二次點擊
                let nowText = e.target.firstElementChild.alt 
                let nowId = e.target.id
                changeDisplay(e.target.firstElementChild,"block")
                console.log(nowText,preText,nowId,preId)
                if (nowText === preText){
                    //水果相同 進行消除,加分操作
                    score += 2
                    // 這里得用不可見,要不然位置順序會變
                    // 不可見仍然觸發(fā)點擊事件
                    setTimeout(function(){
                        document.getElementById(preId).style.visibility = "hidden"
                        document.getElementById(nowId).style.visibility = "hidden"
                        scoreEle.innerText = score
                        // 清空
                        num = 0
                        preId = ""
                        preText = ""
                    },1000)
                } else {
                     //水果不相同 進行隱藏,減分操作
                     score -= 2
                     // 隱藏圖像
                     setTimeout(function(){
                        document.getElementById(preId).firstElementChild.style.display = "none"
                        document.getElementById(nowId).firstElementChild.style.display = "none"
                        scoreEle.innerText = score
                        // 清空
                        num = 0
                        preId = ""
                        preText = ""
                     },1000)
                }
            }
        })
    })
}


【真題練習】用什么來做計算 A

考點:js操作和eval()方法
思路:監(jiān)聽每個按鈕的點擊事件,維護一個字符串str,如果是 reset, sqrt, equal這三個按鈕的點擊事件,進行相應的處理,其他按鈕的點擊事件,則直接拼接str字符串,并更新視圖即可。

// TODO:請補充代碼
const formulaEle = document.querySelector("#formula")
const resultEle = document.querySelector("#result")


const btnList = document.querySelectorAll(".calc-button")

let str = ""

Array.from(btnList).forEach(btn=>{
    btn.addEventListener("click",function(){
        const id = btn.id 
        const s = btn.innerText.replace("x","*").replace("÷","/")
        console.log("click ...",id)
        switch (id) {
            case "reset":
                str = ""
                formulaEle.value = ""
                resultEle.value = ""
                return 
            case "sqrt":
                resultEle.value = Math.sqrt(eval(str));
                return 
            case "equal":
                resultEle.value = eval(str);
                return 
            default:
                str += s
                formulaEle.value = str
                break;
        }
    })
})

【真題練習】權限管理

考點:DOM操作
思路:首先獲取數(shù)據(jù),然后根據(jù)數(shù)據(jù)驅動去更新DOM,每次點擊事件都去會改變userList的值,然后根據(jù)userList的狀態(tài)去更新頁面的變化。

$(function () {
  // 使用 ajax 獲取 userList.json 數(shù)據(jù)并渲染到頁面
  getData();
  // 為按鈕添加事件
  $("#add").click(function () {
    // TODO:補充代碼,實現(xiàn)功能
    let changeList = Array.from(leftSelectEle.selectedOptions).map(e=>({name:e.value}))
    changeAccess(true,changeList)
  });
  $("#addAll").click(function () {
    // TODO:補充代碼,實現(xiàn)功能
    changeAccess(true,userList)
  });
  $("#remove").click(function () {
    // TODO:補充代碼,實現(xiàn)功能
    let changeList = Array.from(rightSelectEle.selectedOptions).map(e=>({name:e.value}))
    changeAccess(false,changeList)
  });
  $("#removeAll").click(function () {
    // TODO:補充代碼,實現(xiàn)功能
    changeAccess(false,userList)
  });
});

const tableEle = document.querySelector("#userList")
const leftSelectEle = document.querySelector("#leftSelect")
const rightSelectEle = document.querySelector("#rightSelect")

function updateTable() {
  let html = `<tr>
    <td>用戶名</td>
    <td>權限</td>
  </tr>`
  userList.forEach(user=>{
    let name = user.name
    let right = user.right ? "管理員" : "普通用戶"
    html += `<tr>
    <td>${name}</td>
    <td>${right}</td>
  </tr>`
  })
  tableEle.innerHTML = html
}

function updateSelect() {
  let leftHtml = ``
  let rightHtml = ``
  userList.forEach(user=>{
    let tmpHtml = `<option value="${user.name}">${user.name}</option>` 
    if (user.right) {
      rightHtml += tmpHtml
    } else {
      leftHtml += tmpHtml
    }
  })
  leftSelectEle.innerHTML = leftHtml
  rightSelectEle.innerHTML = rightHtml
}
/**
 * 修改權限
 * @param {Object} right 要修改的權限
 * @param {Object} changeList 要修改權限的用戶列表
 */
function changeAccess(right, changeList) {
  // TODO:補充代碼,實現(xiàn)功能
  changeList.forEach(changeUser=>{
    let idx = userList.findIndex(user=>user.name===changeUser.name)
    userList[idx].right = right
  })
  updateTable()
  updateSelect()
}
var userList = []
// 異步獲取數(shù)據(jù)
async function getData() {
  // TODO:補充代碼,實現(xiàn)功能
  await $.ajax({
    url: "./js/userList.json",
    type: "GET",
    success: function(res){
      userList = res
    }
  })
  updateTable()
}


【真題練習】一起會議吧

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>一起會議吧</title>
    <link rel="stylesheet" type="text/css" href="./css/index.css" />
    <link rel="stylesheet" href="./css/iconfont/iconfont.css" />
  </head>
  <body>
    <div id="app">
      <!-- TODO:請在下面實現(xiàn)需求 -->
      <!-- 登錄/注銷窗口 -->
      <div class="login">
        <div class="left-tools">
          <a class="close-btn"></a>
          <a class="shrink-btn"></a>
        </div>
        <h3 v-if="!isLogin">登錄</h3>
        <h3 v-else>注銷</h3>
        <p v-if="!isLogin">
          選擇用戶:<select id="selectUser" v-model="selectId">
            <option :value="user.id" v-for="user in userList" :key=""user.id>{{user.name}}</option>
          </select>
        </p>
        <p v-else>當前用戶為:Tom</p>

        <a class="login-btn" @click="login" v-if="!isLogin">登錄</a>
        <a class="login-btn" @click="logout" v-else>注銷</a>
      </div>

      <!-- 右側顯示用戶列表窗口按鈕 -->
      <button id="show" class="right-btn" @click="()=>isDisplay=true" v-if="!isDisplay">
        <span class="iconfont icon-left-arrow"></span>
      </button>

      <!-- 用戶列表窗口 -->
      <div class="user-dialog" v-if="isLogin && isDisplay">
        <!-- 用戶列表窗口上側工具欄 -->
        <ul class="tools">
          <li class="tools-left">
            <button :class="{active:activeIndex === 0}" @click="toolChange('none',0)">
              <span class="iconfont icon-close"></span>
            </button>
            <button :class="{active:activeIndex === 1}" @click="toolChange('one',1)">
              <span class="iconfont icon-dialog"></span>
            </button>
            <button :class="{active:activeIndex === 2}" @click="toolChange('all',2)">
              <span class="iconfont icon-list"></span>
            </button>
          </li>
          <li class="tools-right" @click="()=>isDisplay=false">
            <button class="show-list">
              <span class="iconfont icon-retract"></span>
            </button>
          </li>
        </ul>

        <!-- 用戶列表 -->
        <ul class="say-list">
          <li>
            <span class="iconfont icon-microphone"></span>
          </li>
          <li class="line"></li>
          <li>正在講話:Tom;</li>
        </ul>
        <ul class="user-list">
          <li v-for="user in meetUserList" :key=""user.id>
            <img class="header" :src="user.imgPath" />
            <div class="user-name">
              <span class="iconfont icon-user header-icon" v-if="user.isHost"></span>
              <span class="iconfont icon-microphone"></span>
              {{user.name}}
            </div>
          </li>
          <!-- <li>
            <img class="header" src="./images/header2.png" />
            <div class="user-name">
              <span class="iconfont icon-microphone"></span>
              Lily
            </div>
          </li> -->
        </ul>
      </div>
    </div>
    <script type="text/javascript" src="./js/vue.js"></script>
    <script type="text/javascript" src="./js/axios.min.js"></script>
    <script type="text/javascript">
      // TODO:請在下面實現(xiàn)需求
      new Vue({
        el: "#app",
        data(){
          return {
            userList: [],
            isLogin: false,
            selectId: "1",
            isDisplay: true,
            mode: "all",
            activeIndex: 2,
          }
        },
        methods: {
            login(){
              this.isLogin = true
            },
            logout(){
              this.isLogin = false
            },
            toolChange(mode,idx){
              this.activeIndex = idx 
              this.mode = mode
            }
        },
        computed:{
          meetUserList:function(){
            if(this.mode === 'all'){
              return this.userList.filter(user=>user.id === this.selectId).concat(this.userList.filter(user=>user.id !== this.selectId)) 
            }else if(this.mode === 'one'){
              console.log(this.selectId,this.userList,this.userList.filter(user=>user.id === this.selectId))
              return this.userList.filter(user=>user.id === this.selectId)
            }else if(this.mode === 'none'){
              return []
            }
          }
        },
        mounted(){
          axios.get("./js/userList.json").then(res => this.userList = res.data)
        }
      });
    </script>
  </body>
</html>


【真題練習】商城管理系統(tǒng)

考點:遞歸操作和深度優(yōu)先遍歷
思路:利用遞歸生成 menus,利用深度優(yōu)先遍歷生成auths 文章來源地址http://www.zghlxwxcb.cn/news/detail-741679.html

// menuList 僅為示例數(shù)據(jù),非實際使用數(shù)據(jù),實際使用數(shù)據(jù)層級不確定(可能是四級五級六級等),數(shù)據(jù)結構與 menuList 一致
// 1. `parentId` 如果為 `-1`,則表示此條數(shù)據(jù)為頂級數(shù)據(jù)。
// 2. `parentId` 為該條數(shù)據(jù)的父級數(shù)據(jù)的 `id`。

let menuList = [
  { parentId: -1, name: "添加管理員", id: 10, auth: "admin" },
  { parentId: 10, name: "管理員權限分配", id: 11, auth: "admin-auth" },
  { parentId: -1, name: "商品管理", id: 1, auth: "product" },
  { parentId: 1, name: "商品列表", id: 4, auth: "productList" },
  { parentId: 4, name: "商品分類", id: 5, auth: "category" },
  { parentId: 5, name: "添加分類", id: 8, auth: "addClassification" },
  { parentId: 4, name: "商品上架", id: 6, auth: "product" },
  { parentId: -1, name: "評論管理", id: 2, auth: "comments" },
  { parentId: -1, name: "個人中心", id: 3, auth: "profile" },
];

/**
 * @param {*} menuList 傳入的數(shù)據(jù)
 * @return {*} menus 轉化后的樹形結構數(shù)據(jù),auths 轉化后的權限列表數(shù)組
 */
// 遞歸插入
const insertMenu = (menus,menu) => {
  if( !menus || menus.length < 1) return ;
  for (let index = 0; index < menus.length; index++) {
    const element = menus[index];
    if (element.id === menu.parentId) {
      element.children.push(menu)
      return 
    }
    insertMenu(element.children,menu)
  }
}
// 深度優(yōu)先
const deepSearch = (menus) => {
  let auths = []
  menus.forEach(menu=>{
    auths.push(menu.auth)
    if (menu.children.length > 0) {
      auths = auths.concat(deepSearch(menu.children))
    }
  })
  return auths
}

const getMenuListAndAuth = (menuList) => {
  // TODO:待補充代碼
  let menus = []
  let auths = []
  menuList.forEach(menu=>{
    let temp = {
      parentId: menu.parentId,
      name: menu.name,
      id: menu.id,
      auth: menu.auth,
      children: []
    }
    if(menu.parentId === -1){
      // 第一級
      menus.push(temp)
    }else{
      // 第n級插入
      insertMenu(menus,temp)
    }
  })
  auths = deepSearch(menus)
  return { menus, auths }; // menus 轉化后的樹形結構數(shù)據(jù),auths 轉化后的權限列表數(shù)組
};

// 請勿刪除和修改以下代碼
try {
  module.exports = { getMenuListAndAuth };
} catch (e) {}

到了這里,關于第十三屆藍橋杯國賽 Web 前端組(大學組) 真題練習及答案解析的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 2023第十四屆藍橋杯國賽 C/C++ 大學 B 組

    試題 F: 刪邊問題 沒實現(xiàn) 試題 I: 拼數(shù)字 不會做 試題 J: 逃跑 不會做 本題總分:5 分 【問題描述】 小藍在黑板上連續(xù)寫下從 1 到 2023 之間所有的整數(shù),得到了一個數(shù)字序列: S = 12345678910111213 . . . 20222023。 小藍想知道 S 中有多少種子序列恰好等于 2023? 提示,以下是 3 種滿足

    2024年02月08日
    瀏覽(40)
  • 2023第十四屆藍橋杯國賽 C/C++ 大學 B 組 (賽后記錄)

    2023 第十四屆藍橋杯國賽 C / C + + 大學 B 組 2023第十四屆藍橋杯國賽 C/C++ 大學 B 組 2023 第十四屆藍橋杯國賽 C / C + + 大學 B 組 點我查看題目PDF 由于是學校期末復習周, 很多算法沒有復習, 結果考了一堆板題 (悲 A題 子 2023 直接跑暴力就行, 應該沒啥問題 答案 B題 雙子數(shù) 篩一下可

    2024年02月09日
    瀏覽(21)
  • 藍橋杯第十三屆單片機國賽程序

    藍橋杯第十三屆單片機國賽程序

    寫在前面: 做完總體來說感覺一年比一年難了(估計是被罵的),雖然十三屆用的底層少,但是做起來困難重重。 最難的難點在于定時器安排問題。15F2K60S2系列單片機只有三個定時器,本屆題目考到了頻率測量、超聲波、PWM輸出,再加上刷新,每一個都需要一個定時器,比

    2024年02月08日
    瀏覽(24)
  • 第十三屆藍橋杯C++B組j國賽

    第十三屆藍橋杯C++B組j國賽

    題目 2693: 這天,小明在整理他的卡牌。 他一共有 n 種卡牌,第 i 種卡牌上印有正整數(shù)數(shù) i(i ∈ [1, n]),且第 i 種卡牌 現(xiàn)有 ai 張。 而如果有 n 張卡牌,其中每種卡牌各一張,那么這 n 張卡牌可以被稱為一 套牌。小明為了湊出盡可能多套牌,拿出了 m 張空白牌,他可以在上面寫

    2024年02月08日
    瀏覽(21)
  • 藍橋杯單片機第十三屆國賽客觀題(深夜學習——單片機)

    藍橋杯單片機第十三屆國賽客觀題(深夜學習——單片機)

    1.填空題 (2)不同的地址范圍: data:0x00-0xff idata:0x0000-0xffff xdata:0x0000-0xffff pdata:0x00-0xff code:0x0000-0xffff 2.選擇題 (3)模電——》多級放大電路 (6)DS18B20 (7)模電——》二極管 ?(8)單片機 ? ? ?

    2024年02月11日
    瀏覽(92)
  • 第十三屆藍橋杯Java B 組國賽 C 題——左移右移(AC)

    小藍有一個長度為 N N N 的數(shù)組, 初始時從左到右依次是 1 , 2 , 3 , … N 1,2,3, ldots N 1 , 2 , 3 , … N 。 之后小藍對這個數(shù)組進行了 M M M 次操作, 每次操作可能是以下 2 種之一: 左移 x x x , 即把 x x x 移動到最左邊。 右移 x x x , 即把 x x x 移動到最右邊。 請你回答經過 M M M 次操作之后

    2024年02月02日
    瀏覽(24)
  • 【藍橋杯嵌入式】第十三屆藍橋杯嵌入式國賽程序設計試題以及詳細題解

    【藍橋杯嵌入式】第十三屆藍橋杯嵌入式國賽程序設計試題以及詳細題解

    ??本屆國賽試題主要包含 LCD 、 LED 、 按鍵 、 EEPROM 、 串口 、 模擬電壓輸入 、 脈沖輸入輸出 七大部分,其中前面三個部分是藍橋杯嵌入式的“親兒子”(必考部分),而剩下的四個部分都為“干兒子”(考頻相對較高)。 ??相對于本屆省賽兩套試題: ??本套試題 串口數(shù)

    2024年02月02日
    瀏覽(95)
  • 第十三屆藍橋杯大學A組題解(Python)

    第十三屆藍橋杯大學A組題解(Python)

    寫在前面 : KS感覺這次比賽....Emmm一言難盡,貼吧充斥著車隊,B站傳著退費視頻... Whatever , 既然報了名并且用心準備了,那就全力以赴?? 學了那么久的暴力算法居然只能被冷藏... —————————————————————————————————————————

    2023年04月09日
    瀏覽(19)
  • 第十三屆藍橋杯 C/C++ 大學B組 題解

    進制計算簡單模擬 遍歷2022的每一天,轉成字符串拼接,然后判斷 找規(guī)律 主要就是看懂題意和取模的問題。 321 對應八進制、十進制、二進制 計算過程為: 3 ? 10 ? 2 + 2 ? 2 + 1 = 65 3*10*2+2*2+1 = 65 3 ? 10 ? 2 + 2 ? 2 + 1 = 65 通過枚舉上下邊界,和前綴和,就轉成了一維數(shù)組求子

    2023年04月11日
    瀏覽(46)
  • 第十三屆藍橋杯省賽與國賽真題題解大匯總(十四屆參賽者必備)

    ??大家好,我是執(zhí)梗。本文匯總了我寫的第十三屆藍橋杯所有省賽真題與國賽真題,會針對每道題打出我自己的難度評星??,也會給出每道題的算法標簽,幫助大家更有針對性的去學習和準備,當然許多題目由于難度或時間的原因暫未更新,如果有不懂的問題也可以在評

    2024年02月11日
    瀏覽(37)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包