藍橋杯 web 學海無涯(axios、ecahrts)版本二

答案:

// TODO: 待補充代碼// 初始化圖表的數據,設置周視圖的初始數據
option.series[0].data = [180, 274, 253, 324, 277, 240, 332, 378, 101]; // 周數據(每周的總學習時長)
option.xAxis.data = ["2月第1周", "2月第2周", "2月第3周", "2月第4周", "3月第1周", "3月第2周", "3月第3周", "3月第4周", "3月第5周"]; // 周標簽(每周的時間段)
myChart.setOption(option); // 將配置應用到圖表,初始化為周視圖// 定義變量用于存儲月視圖的數據
let xMonthSeries; // 存儲月份標簽(如 ["2月", "3月"])
let yMonthSeries; // 存儲每月的總學習時長(如 [總時長1, 總時長2])// 定義一個求和函數,用于計算數組中所有元素的總和
function sum(arr) {return arr.reduce((total, value) => total += value, 0); // 使用 reduce 方法對數組進行累加,初始值為 0
}// 獲取數據:從 data.json 文件中加載數據
axios.get('./data.json').then(({ data: { data } }) => {console.log(data); // 打印從 data.json 中獲取的數據,便于調試// 提取月份標簽(即對象的鍵,如 "2月"、"3月")xMonthSeries = Object.keys(data); // 獲取對象的所有鍵,形成月份標簽數組// 計算每個月的學習總時長yMonthSeries = [sum(Object.values(data)[0]), // 第一個月(如 "2月")的學習時長總和sum(Object.values(data)[1])  // 第二個月(如 "3月")的學習時長總和];
});// 監聽 Tab 切換事件:實現“周”和“月”視圖的切換
let tabs = document.getElementsByClassName('tab'); // 獲取所有的 tab 元素
for (let index = 0; index < tabs.length; index++) {tabs[index].addEventListener('click', (e) => {console.log(e.target.textContent); // 打印當前點擊的 Tab 標簽內容("周" 或 "月")if (e.target.textContent === '月') {// 如果點擊的是“月”Tab,則切換為月視圖option.series[0].data = yMonthSeries; // 設置月視圖的 y 軸數據(每月的總學習時長)option.xAxis.data = xMonthSeries;   // 設置月視圖的 x 軸數據(月份標簽)myChart.setOption(option);          // 應用新的配置到圖表} else if (e.target.textContent === '周') {// 如果點擊的是“周”Tab,則切換為周視圖option.series[0].data = [180, 274, 253, 324, 277, 240, 332, 378, 101]; // 恢復周視圖的 y 軸數據option.xAxis.data = ["2月第1周", "2月第2周", "2月第3周", "2月第4周", "3月第1周", "3月第2周", "3月第3周", "3月第4周", "3月第5周"]; // 恢復周視圖的 x 軸數據myChart.setOption(option); // 應用新的配置到圖表}});
}

詳細注釋說明

1. 初始化圖表數據
  • option.series[0].data?和?option.xAxis.data
    • 這是 ECharts 圖表的核心數據部分。
    • series[0].data?表示 y 軸數據(如每周的學習時長)。
    • xAxis.data?表示 x 軸數據(如每周的時間段)。
    • 在這里,我們設置了初始的周視圖數據。
2. 定義變量
  • xMonthSeries?和?yMonthSeries
    • 這兩個變量用于存儲月視圖的數據。
    • xMonthSeries?是月份標簽(如?["2月", "3月"])。
    • yMonthSeries?是每月的學習時長總和(通過?sum?函數計算得出)。
3. 求和函數
  • sum(arr)
    • 使用?reduce?方法對數組中的所有元素進行累加。
    • reduce?的回調函數接收兩個參數:累積值?total?和當前值?value
    • 初始值為?0,確保即使數組為空,返回值也是?0
4. 獲取數據
  • axios.get('./data.json')
    • 使用 Axios 發起 HTTP GET 請求,從?data.json?文件中加載數據。
    • { data: { data } }?是解構賦值,直接提取響應中的?data?部分。
    • Object.keys(data)?獲取對象的所有鍵,形成月份標簽數組。
    • Object.values(data)?獲取對象的所有值(即每月的學習時長數組),并調用?sum?函數計算總和。
5. 監聽 Tab 切換
  • document.getElementsByClassName('tab')
    • 獲取頁面中所有的?tab?元素(即“周”和“月”按鈕)。
  • addEventListener('click', ...)
    • 為每個?tab?添加點擊事件監聽器。
    • 當用戶點擊某個 Tab 時,根據其內容(e.target.textContent)判斷是“周”還是“月”。
    • 根據判斷結果,動態更新?option?的數據,并調用?myChart.setOption(option)?更新圖表。

1. 初始化圖表數據

option.series[0].data = [180, 274, 253, 324, 277, 240, 332, 378, 101];
option.xAxis.data = ["2月第1周", "2月第2周", ..., "3月第5周"];
myChart.setOption(option);
  • option?是一個配置對象,用于設置圖表的數據和樣式。
  • series[0].data?是圖表的數值數據(如柱狀圖的高度)。
  • xAxis.data?是圖表的橫軸標簽(如時間周期)。
  • myChart.setOption(option)?將這些配置應用到圖表中,初始顯示的是“周”維度的數據。

2. 定義變量和函數

let xMonthSeries;
let yMonthSeries;function sum(arr) {return arr.reduce((total, value) => total += value, 0);
}
  • xMonthSeries?和?yMonthSeries?是兩個變量,分別用于存儲“月”維度的橫軸標簽和縱軸數據。
  • sum?函數用于計算數組中所有元素的總和(例如?[1, 2, 3]?的總和是?6)。

3. 獲取數據并處理

axios.get('./data.json').then(({ data: { data } }) => {console.log(data);xMonthSeries = Object.keys(data);yMonthSeries = [sum(Object.values(data)[0]),sum(Object.values(data)[1])];
});
  • 使用?axios.get?從文件?data.json?中獲取數據。
  • 假設?data.json?的內容如下:
    {"2月": [180, 274, 253, 324],"3月": [277, 240, 332, 378, 101]
    }
  • Object.keys(data)?提取鍵(即月份),結果為?["2月", "3月"],賦值給?xMonthSeries
  • Object.values(data)?提取值(即每個月對應的數組),然后用?sum?函數計算每個數組的總和,結果為?[1031, 1328],賦值給?yMonthSeries

4. 監聽 Tabs 點擊事件

let tabs = document.getElementsByClassName('tab');
for (let index = 0; index < tabs.length; index++) {tabs[index].addEventListener('click', (e) => {console.log(e.target.textContent);if (e.target.textContent === '月') {option.series[0].data = yMonthSeries;option.xAxis.data = xMonthSeries;myChart.setOption(option);} else if (e.target.textContent === '周') {option.series[0].data = [180, 274, 253, 324, 277, 240, 332, 378, 101];option.xAxis.data = ["2月第1周", "2月第2周", ..., "3月第5周"];myChart.setOption(option);}});
}
  • tabs?是頁面上所有的 Tab 按鈕(假設有兩個按鈕:一個是“月”,另一個是“周”)。
  • 給每個 Tab 按鈕添加點擊事件監聽器,當用戶點擊時觸發回調函數。
  • 回調函數根據點擊的按鈕內容(e.target.textContent)判斷用戶選擇了“月”還是“周”:
    • 如果選擇“月”,則更新圖表數據為“月”維度的數據(xMonthSeries?和?yMonthSeries)。
    • 如果選擇“周”,則更新圖表數據為“周”維度的原始數據。
  • 最后調用?myChart.setOption(option)?更新圖表。

5. 總結

這段代碼的核心功能是通過切換“周”和“月”的視圖來動態更新圖表數據:

  • 初始顯示“周”維度的數據。
  • 當用戶點擊“月”按鈕時,顯示每個月的總和。
  • 當用戶點擊“周”按鈕時,恢復顯示每周的原始數據。

    版本一文章的鏈接:藍橋杯 web 學海無涯(echarts、axios)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/75340.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/75340.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/75340.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java 大視界 -- Java 大數據在智慧文旅虛擬場景構建與沉浸式體驗增強中的技術支撐(168)

&#x1f496;親愛的朋友們&#xff0c;熱烈歡迎來到 青云交的博客&#xff01;能與諸位在此相逢&#xff0c;我倍感榮幸。在這飛速更迭的時代&#xff0c;我們都渴望一方心靈凈土&#xff0c;而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識&#xff0c;也…

API vs 網頁抓取:獲取數據的最佳方式

引言 在當今數字化時代&#xff0c;對于企業、研究人員以及開發人員而言&#xff0c;獲取準確且及時的數據是大多數項目成功的關鍵因素。目前&#xff0c;收集網頁數據主要有兩種常用方法&#xff0c;即使用 API&#xff08;應用程序接口&#xff09;和網頁抓取。然而&#xf…

車載以太網網絡測試-25【SOME/IP-報文格式-1】

目錄 1 摘要2 SOME/IP-報文格式2.1 **Service ID / 16 bits**2.2 **Method ID / Event ID / 16 bits**2.3 **Length / 32 bits**2.4 **Client ID / 16 bits**2.5 Session ID / 16 bits2.6 Protocol Version / 8 bits2.7 Interface Version / 8 bits2.8 Message Type / 8 bits2.…

Python數據可視化-第3章-圖表輔助元素的定制

環境 開發工具 VSCode庫的版本 numpy1.26.4 matplotlib3.10.1 ipympl0.9.7教材 本書為《Python數據可視化》一書的配套內容&#xff0c;本章為第3章-圖表輔助元素的定制 本章主要介紹了圖表輔助元素的定制&#xff0c;包括認識常用的輔助元素、設置坐標軸的標簽、設置刻度范…

小程序30-wxml語法-聲明和綁定數據

小程序頁面中使用的數據均需要在Page() 方法的 data對象中進行聲明定義 在將數據聲明好以后&#xff0c;在 WXML 使用 Mustache 語法 ( 雙大括號{{ }} ) 將變量包起來&#xff0c;從而將數據綁定 在 {{ }} 內部可以做一些簡單的運算&#xff0c;支持如下幾種方式: 算數運算三…

ubuntu開啟黑屏現象解決

文章目錄 前言一、問題描述二、解決方案1. 檢查顯卡驅動解決步驟&#xff1a; 2. 修復 GRUB 配置解決步驟&#xff1a; 3. 使用恢復模式解決步驟&#xff1a; 三、驗證與總結 前言 在使用 Ubuntu 操作系統時&#xff0c;一些用戶可能會遇到開機后屏幕黑屏的現象。這種問題可能…

Modbus TCP轉Profibus DP網關接防撞雷達與PLC通訊

Modbus TCP轉Profibus DP網關接防撞雷達與PLC通訊 在工業自動化領域&#xff0c;通信協議的多樣性既是技術進步的體現&#xff0c;也給系統集成帶來了挑戰。Modbus TCP和Profibus DP是兩種廣泛應用于不同場景下的通信標準&#xff0c;它們各有優勢但也存在著互操作性的需求。本…

分布式鎖方案-Redisson

分布式鎖&#xff1a;Redisson還實現了Redis文檔中提到像分布式鎖Lock這樣的更高階應用場景。事實上Redisson并沒有不止步于此&#xff0c;在分布式鎖的基礎上還提供了聯鎖&#xff08;MultiLock&#xff09;&#xff0c;讀寫鎖&#xff08;ReadWriteLock&#xff09;&#xff…

【AI插件開發】Notepad++ AI插件開發實踐:從Dock窗口集成到功能菜單實現

一、項目背景與技術選型 在上篇文章實現"選中即問AI"功能的基礎上&#xff0c;本文重點解決AI對話窗口的集成與核心功能菜單的開發。通過Notepad插件體系&#xff0c;我們將實現以下功能矩陣&#xff1a; AI交互系統&#xff1a;支持自然語言提問與任務執行代碼智能…

ControlNet-Tile詳解

一、模型功能與應用 1. 模型功能 ControlNet-Tile模型的主要功能是圖像的細節增強和質量提升。它通過以下幾個步驟實現這一目標&#xff1a; 語義分割&#xff1a;模型首先對輸入的圖像進行語義分割&#xff0c;識別出圖像中不同的區域和對象。這一步是為了讓模型理解圖像的內…

英飛凌高信噪比MEMS麥克風驅動人工智能交互

導言 在英飛凌&#xff0c;我們一直堅信卓越的音頻解決方案對于提升消費類設備的用戶體驗至關重要。我們堅定不移地致力于創新&#xff0c;在主動降噪、語音透傳、錄音室錄音、音頻變焦和其他相關技術方面取得了顯著進步&#xff0c;對此我們深感自豪。作為MEMS麥克風的領先供…

【Azure】如何使用 Docker CLI 和 Compose 將容器部署到 Azure ACI

推薦超級課程: 本地離線DeepSeek AI方案部署實戰教程【完全版】Docker快速入門到精通Kubernetes入門到大師通關課AWS云服務快速入門實戰在云中運行容器可能既困難又令人困惑。有太多選項可供選擇,而且還需要理解從虛擬網絡到安全性的不同云服務的工作方式。更不用說編排器了。…

結構化剪枝(Structured Pruning)與動態蒸餾(Dynamic Distillation)

結構化剪枝&#xff08;Structured Pruning&#xff09;技術詳解 核心原理 結構化剪枝通過模塊級&#xff08;如層、通道、塊&#xff09;而非單個權重的方式去除冗余參數&#xff0c;保留關鍵子網絡。其優勢在于&#xff1a; 硬件友好性&#xff1a;生成規則稀疏模式&#x…

linux shell 刪除空行(remove empty lines)

命令行 grep -v ^$ file sed /^$/d file 或 sed -n /./p file awk /./ {print} file 或 awk {if($0!" ") print} tr -s "n"vim交互 %s/^n//g

數據庫6(數據庫指令)

之前所學的指令均為查找指令&#xff0c;即select相關語句 接下來的語句是增刪改查的其他三部分&#xff0c;即增刪改 1.刪除 刪除操作是三個操作中較為簡單的&#xff0c;因為它只需要考慮數據的完整性 在實驗時可以用表的復件來操作&#xff0c;防止操作不當導致數據庫被…

web網頁上實現錄音功能(vue3)

文章目錄 一. 前言二. 技術實現1.核心API介紹2.模板部分3.核心邏輯實現 4. 關鍵功能點解析 三. 完整代碼四. 功能擴展建議 一. 前言 在Web開發中實現音頻錄制功能是許多應用場景的常見需求。本文將通過一個完整的Vue 3組件示例&#xff0c;詳細解析如何利用現代瀏覽器API實現網…

安美數字酒店寬帶運營系統存在SQL注入漏洞

免責聲明&#xff1a;本號提供的網絡安全信息僅供參考&#xff0c;不構成專業建議。作者不對任何由于使用本文信息而導致的直接或間接損害承擔責任。如涉及侵權&#xff0c;請及時與我聯系&#xff0c;我將盡快處理并刪除相關內容。 漏洞描述 安美數字酒店寬帶運營系統的lang…

206. 反轉鏈表 92. 反轉鏈表 II 25. K 個一組翻轉鏈表

leetcode Hot 100系列 文章目錄 一、翻轉鏈表二、反轉鏈表 II三、K 個一組翻轉鏈表總結 一、翻轉鏈表 建立pre為空&#xff0c;建立cur為head&#xff0c;開始循環&#xff1a;先保存cur的next的值&#xff0c;再將cur的next置為pre&#xff0c;將pre前進到cur的位置&#xf…

【區塊鏈安全 | 第十七篇】類型之引用類型(一)

文章目錄 引用類型數據存儲位置分配行為 數組特殊數組&#xff1a;bytes 和 string 類型bytes.concat 和 string.concat 的功能分配 memory 數組數組字面量&#xff08;Array Literals&#xff09;二維數組字面量數組成員&#xff08;Array Members&#xff09;懸空引用&#x…

selenium和pytessarct提取古詩文網的驗證碼(python爬蟲)

代碼實現的主要功能&#xff1a; 瀏覽器自動化控制 驗證碼圖像獲取與處理 OCR驗證碼識別 表單自動填寫與提交 登錄狀態驗證 異常處理與資源清理 1. 瀏覽器初始化與頁面加載 driver webdriver.Chrome() driver.get("https://www.gushiwen.cn/user/login.aspx?fro…