# JavaScript - 陣列 forEach 資料處理方法 ###### tags: `javascript` `array` `forEach` ## forEach 寫法介紹 * forEach(function(item, index, array){}) * 參數1 item:陣列資料 * 參數2 index:第 ○ 筆 * 參數3 array:陣列 ```javascript= let data = [30, 40, 50, 60, 70, 80, 90]; // forEach 依序把每一筆資料讀取出來 //參數 //陣列資料 //第○筆 //陣列 data.forEach(function (item, index, array) { console.log(item, index, array); }) // forEach 依序跑完整個陣列才會執行這行 console.log("end"); ``` ### 陣列數字累加 ```javascript= let data = [30, 40, 100, 200, 300]; // 為了成功累加,宣告變數 total 要放在外層 let total = 0; data.forEach(function (item, index) { total += item; console.log(total); // 30 70 170 370 670 }) console.log(total); // 670 ``` ### 變數作用域講解 ```javascript= let data = [30, 40, 100, 200, 300]; data.forEach(function (item, index) { // 宣告變數 total 放在內層 -> 每執行一次 forEach 都會重新歸零,因此不會累加 let total = 0; total += item; console.log(total); // 30 40 100 200 300 }) console.log(total); //因 total 宣告在內層,於外層讀取不到值 ``` ### 搭配 if,篩選出陣列裡面有幾個偶數 ```javascript= let data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; let total = 0; let newData = []; //整理成一個新陣列資料 data.forEach(function (item, index) { // console.log(item); if (item % 2 == 0) { total += 1; //計算共幾筆偶數 newData.push(item); } }) console.log(total); //顯示共幾筆偶數 console.log(newData); //觀察新陣列資料 ``` ### forEach 讀取資料 #### forEach 可讀取不同型別的資料 ```javascript= let data1 = [11, "hello", true]; data1.forEach(function (item, index) { console.log(item); //11 hello true }) ``` #### forEach 讀取物件型別資料 ```javascript= let data2 = [ { name: "Tom", sex: "male" }, { name: "Tina", sex: "female" } ] data2.forEach(function (item, index) { console.log(item, index); //{name: "Tom",sex: "male"} // 物件取值的方式 console.log(item.name); //Tom console.log(item.sex); //male }) ``` ### 透過物件整合資料-男女人數計算機 ```javascript= let data = [ { name: "Tom", sex: "male" }, { name: "Tina", sex: "female" }, { name: "Jay", sex: "male" }, { name: "Jason", sex: "male" }, { name: "Mia", sex: "female" }, { name: "Jane", sex: "female" }, ] // 宣告變數 // let femaleTotal = 0; // let maleTotal = 0; // 改用物件資料紀錄 let peopleTotal = { female: 0, male: 0 } data.forEach(function (item, index) { console.log(item.sex); if (item.sex == "female") { peopleTotal.female += 1; } else { peopleTotal.male += 1; } }) console.log(peopleTotal); // {female: 3, male: 3} console.log(peopleTotal.female); // 3 console.log(peopleTotal.male); // 3 ```