# Lidemy 第五期期中測驗
## 測驗說明
測驗時間為 120 分鐘,總共有四題,在寫題目的時候請注意時間,一題 30 分鐘,超過 30 分鐘請自行跳到下一題,就算沒有解完也一樣。如果還沒到 30 分鐘就完成,可以直接跳下一題。
測驗網址:https://stackblitz.com/edit/web-platform-erygfk?file=index.html
點進去之後請先在右上角以 GitHub 帳號登入,並且按下左上方的 Fork,把這個題目 fork 一份到自己帳號底下,才不會不小心遺失。
左邊檔案列的四個資料夾代表了四道題目,直接修改裡面的檔案即可。右邊的瀏覽視窗可以即時看到結果,底下有 console 點下去可以看到 console 內容。
考試結束之後,請透過這個表單把你的程式碼(直接複製 stackblitz 網址,開無痕確認連的到即可)交上來:https://forms.gle/Z3vnKBCfe4zZXGoRA
## 測驗規則
1. **禁止參考自己以前寫過的作業或是筆記**,因為想看大家 google 查資料的能力,因此禁止大家看自己的筆記
2. 可以打開 Google 查資料
3. 不能問人
4. 一題就是 30 分鐘,超過就不能再寫了
5. **不能使用任何第三方 library**
## 第一題:文章列表切版
請切出下面的版面(只考慮桌面版就好,不需考慮 RWD):
![](https://i.imgur.com/u1xWHqO.png)
請把時間放在「完成整體排版」,而非每個地方的小細節。舉例來說,文字顏色找個差不多的就好了,顏色不是重點,字體大小也只要差不多就好,不需要弄到一模一樣。margin 跟 padding 的部分也先憑感覺大概抓一下即可。
其他需注意事項為:
1. 背景那個灰色色碼為 #F2F2F2
2. 藍色色碼為 #00a0e9
3. 整體寬度為 800px
4. 右上角按鈕背景色為 #D5DFE3 ,文字顏色為 #62808F
## 第二題:食物清單管理器
這一題要實作的是一個想吃的食物的管理工具,介面已經幫你切好了,長這樣:
![](https://i.imgur.com/7xsBLqR.png)
需求為:
1. 一開始食物列表必須是空的
2. 輸入文字點擊新增後,會在底下新增一個食物,並且在食物名稱旁邊有「刪除」按鈕
3. 按下刪除按鈕,便會把那個食物從列表中刪除
4. 按下「全部刪除」,會把列表清空
5. 按下「好手氣」,會隨機從五種食物中新增一種到清單上(食物列表已提供在 p2.js 裡面)
如果上面的需求在時間內完成,可以繼續做底下加分題,如果 30 分鐘已經用完就可以跳過:
1. 如果文字框是空的,或者都是空白的話,按下新增時會跳出 alert 顯示:「必須輸入食物名稱」
2. 清單必須被保留,重新整理過後依然能看到剛剛的清單
## 第三題:通訊錄
請實作一個簡單的通訊錄:
![](https://i.imgur.com/wTGnKuw.png)
資料來源為這一個 API:https://jsonplaceholder.typicode.com/users
請串接這個 API,並且在畫面上顯示出每一個人的姓名、任職的公司名稱還有 email,以 ` / ` 隔開,並在最後面加上一個刪除按鈕。
按下刪除按鈕時,只要在畫面上把那一筆資料刪除即可
## 第四題:資料整理
你需要寫一個函式去整理資料,資料會是一個陣列,格式如下:
```
[
{id: 1, value: 43},
{id: 1, value: 213},
{id: 2, value: 321},
{id: 3, value: 2},
{id: 3, value: 345},
{id: 4, value: 555},
{id: 4, value: 44},
{id: 3, value: 33},
{id: 3, value: 199},
]
```
對於 id 重複的資料,你必須把 value 合併在一起變成一個陣列,然後合併完的資料會放在「那個 id 第一次出現的位置」。合併時請注意順序,value 的順序要跟資料出現的順序一致。
舉例來說,上面資料把 id 是 1 的資料整理完之後會變成:
```
[
{id: 1, value: [43, 213]},
{id: 2, value: 321},
{id: 3, value: 2},
{id: 3, value: 345},
{id: 4, value: 555},
{id: 4, value: 44},
{id: 3, value: 33},
{id: 3, value: 199},
]
```
若是 id 沒有重複的,就不需要更動。
上面的資料最後整理完會變成這樣:
```
[
{id: 1, value: [43, 213]},
{id: 2, value: 321},
{id: 3, value: [2, 345, 33, 199]},
{id: 4, value: [555, 44]}
]
```
## 時間到之後
考試結束之後,請透過這個表單把你的程式碼(直接複製 stackblitz 網址,開無痕確認連的到即可)交上來:https://forms.gle/Z3vnKBCfe4zZXGoRA