---
# System prepended metadata

title: 【ForEach】和【Map】練習
tags: [JS - 練習]

---

---
tags: JS - 練習
---
# 【ForEach】和【Map】練習

:::warning

### forEach

> forEach() 方法對數組的每個元素執行一次提供的函數。

### map

> map() 方法創建一個新數組，其結果是該數組中的每個元素都調用一個提供的函數後返回的結果。

例如：

```
    const result = studentsData.map(item => {
        return `${ item.name }-${ item.age }歲`
    });
    // 執行結果：result 為 ['王大偉-18歲', '陳小名-24歲'...]
```
:::

> 請用下列資料，data為學校資料:

```
  const data = [
      {
        class: '甲',
        studentsNum: '10',
        studentsData: [
            { id: 1, name: '王大偉', age: 18 },
            { id: 2, name: '陳小名', age: 24 },
            { id: 3, name: '許世斌', age: 23 },
            { id: 4, name: '吳添財', age: 25 },
            { id: 5, name: '陳漢霖', age: 66 },
            { id: 6, name: '楊采媗', age: 17 },
            { id: 7, name: '曾無傭', age: 34 },
            { id: 8, name: '楊漢鎮', age: 38 },
            { id: 9, name: '楊是崁', age: 35 },
            { id: 10, name: '楊安浪', age: 50 }
        ]
      },
      {
        class: '乙',
        studentsNum: '4',
        studentsData: [
            { id: 1, name: '蔡申明', age: 50 },
            { id: 2, name: '蔡文旯', age: 51 },
            { id: 3, name: '陳炘採', age: 58 },
            { id: 4, name: '昂天次', age: 56 },
            { id: 5, name: '王銘感', age: 58, interest: ['打球', '唱歌'] }
        ]
      },
      {
        class: '丙',
        studentsNum: '7',
        studentsData: [
            { id: 1, name: '林赤子', age: 18 },
            { id: 2, name: '林小優', age: 24 },
            { id: 3, name: '陳問鼎', age: 23 },
            { id: 4, name: '陳字字', age: 25 },
            { id: 5, name: '陳余文', age: 66 },
            { id: 6, name: '楊蔡文', age: 17 },
            { id: a, name: 'sd32ddd', age: 546 }
        ]
      }
      
  ]
```

### ForEach 題目:

:::info
甲班的"楊采媗"登入資料填錯了，請將他的年齡改為27歲
:::

:::info
乙班的同學年齡輸入錯誤了，該班級的年齡皆為2*歲，請將班級資料更正
:::

:::info
丙班的同學資料內有人的資料輸入錯誤格式，請將該筆資料的
名稱改為"曾有史"，ID修正為"對應筆數"，年齡為"28"
:::

### Map 題目:

:::info
請將目前學校的班級(甲~丁)存成陣列，並且console出來。
:::

:::info
請將甲班的學生名子console出來，順便將"楊安浪"的年齡改成15歲。
:::

:::info
請將丙班的學生年齡用陣列方式console出來，並將錯誤格式的年齡的回傳直改為"ERROR"字串。
:::

### 補充練習 題目 (不限制方法):

:::info
丁班即將開班，請在學校資料內增加預設資訊
:::

:::info
學校人數越來越多了，校長想統計目前學生總數，請透過迴圈算出總數
:::

:::info
請甲班的學生按照年齡排序
:::

:::info
請從乙班的學生篩選出"昂天次"的資料
:::

:::info
請從學校中的找出"王銘感"該名學生的第一個興趣
:::

:::info
請找出學校資料中錯誤的地方
:::

