--- tags: JS 直播班 - 2021 秋季班 --- # 第七堂:第三方 JS 套件整合之術 * [報到](https://rpg.hexschool.com/training/24/calendar) Code:`37xf3HwklFLK` * 下堂課沒有主線任務!讓大家專注在影音課程 axios 接 API 上 * 前半段講 C3.js,後半段講資料處理,以第[五關小組任務](https://hackmd.io/dmlKNxGHQdSaxpko5INSqw)為例子 ## 時間表,下週五釋出 The F2E 彩蛋授課時間 1. 12/3(五) 最後一堂課 1. 12/17(日) 作業截止日 1. 12/24(日) 心得牆、獎品表單截止日 1. 12/30(四) 成果發表會 # C3.js基本教學 * [環境安裝](https://c3js.org/gettingstarted.html) * [環境範例程式碼](https://codepen.io/hexschool/pen/poRzRXW?editors=1010) * [折線圖增加時間軸](https://codepen.io/hexschool/pen/dyNbvOb?editors=1010) * [變更圖表 type 圓餅圖](https://codepen.io/hexschool/pen/bGgbgXB?editors=1010) * [修改顏色與標題](https://codepen.io/hexschool/pen/NWdKpXw) # 陣列、物件資料處理 * 用套件不難,**工程師的價值在整合** * 需將原始資料改為套件要的格式,[範例](https://codepen.io/hexschool/pen/xxgGggO?editors=0010) ## 觀念一:物件數據蒐集 * [計算陣列裡面各地區人數](https://codepen.io/hexschool/pen/wvgwoBj?editors=0011) * [第五關小組任務最後一題](https://codepen.io/hexschool/pen/yLgNVWZ)、[原始資料](https://cabu4.kcg.gov.tw/KcgRegion/OpenData/%E9%87%8C%E9%95%B7%E9%80%9A%E8%A8%8A%E9%8C%84.JSON) ## 觀念二:Object.key 做資料關聯陣列再處理 ### Object.key 用途:將所有屬性撈出來,變成一個陣列 ```javascript= const totalObj = {高雄: 2, 台北: 1, 台中: 1}; const areaAry = Object.keys(totalObj); // area output ["高雄","台北","台中"] ``` * 用途一:[透過資料關聯,做物件取值](https://codepen.io/hexschool/pen/PoWqWPQ) * 用途二:[重組陣列資料 I](https://codepen.io/liao/pen/GRvPQMZ?editors=1010) * 用途三:[重組陣列資料 II-為 C3.js 所用](https://codepen.io/liao/pen/eYEbVGj?editors=1011) ```JavaScript= const totalObj = {高雄: 2, 台北: 1, 台中: 1}; const areaAry = Object.keys(totalObj); // area output ["高雄","台北","台中"] let newData = []; areaAry.forEach(function(item,index){ let ary = []; ary.push(item); ary.push(totalObj[item]); newData.push(ary); }) console.log(newData) // c3 要的資料格式 //[["高雄", 2], ["台北",1], ["台中", 1]] ``` ## C3 套用 * [範例程式碼](https://codepen.io/liao/pen/VwzqQrw?editors=0010) * [AJAX LV1 JSON+C3](https://codepen.io/hexschool/pen/VwPwRyd?editors=0010) * [C3.js+LV1 AJAX+本地端新增資料](https://codepen.io/hexschool/pen/ExZxMpv) ## 其他範例 * [前後端男女性比例](https://codepen.io/liao/pen/XWaoaxV?editors=1010) * [上屆學長姐 BMI kata 投稿人數折線圖(時間序列折線圖)](https://codepen.io/liao/pen/LYjMjqX?editors=1010) ## 第七關主線任務 * <a href="https://rpg.hexschool.com/training/24/task?type=detail&id=227" target="_top">第七關主線任務</a> * LV1:修改老師的 [Codepen](https://codepen.io/hexschool/pen/NWbOPJM?editors=0010),接 [API](https://raw.githubusercontent.com/hexschool/js-training/main/travelAPI-lv1.json) 顯示 Donut 圖 * LV2:依照此 [XD 設計稿](https://xd.adobe.com/view/3b957757-f50b-4a73-be01-16393e53f49b-6ec6/),用 axios 介接資料,並顯示 C3 圖表 * LV3:做 LV2,並加上上方套票新增時,下方 C3 與套票列表也會即時更新 ## 最終任務重要關鍵 * [第八、九關主線 10 隻 API 文件](https://www.notion.so/API-8b5b74eb052b451faf28013d76811fac) * [最終關卡 XD 設計稿](https://xd.adobe.com/view/a48b8617-4588-4817-9062-b62130dce916-f1d8/)