###### tags: `Javascript`
# 1. Javascript forEach資料處理方法
## forEach 寫法
* 參數可以只擺前面兩個
```javascript=
let data = [30,40];
data.forEach(function(item,index,array){
console.log(item,index,array)
})
```
## forEach融入物件與陣列 將男女資料insert到物件裡的陣列
```javascript=
let people ={
male:[],
woman:[]
}
data.forEach(function(item,index){
if(item.sex == 'woman'){
people.male.push(item);
}
else{
people.woman.push(item);
})
```
# 2. forEach結合Dom實際運用
## forEach結合innerHTML
```htmlembedded=
<div>
<h2>
新增資料
</h2>
<input type="text" placeholder="充電站名稱" class="stationName">
<select name="" id="" class="stationCharge">
<option value="免費"></option>
<option value="投幣式"></option>
</select>
<input type="button" class="btn" value = '儲存'>
<h2>
資料顯示
</h2>
<input type="button" value = '全部'>
<input type="button" value = '免費'>
<input type="button" value = '投幣式'>
</div>
<ul class = "list">
<li>xx充電站,免費</li>
</ul>
```
>初始化 確保程式先執行
```javascript=
let date = [
{
Charge:"免費",
name:"小明充電站"
},{
Charge:"投幣式",
name:"小紅充電站"
}
];
//0. 下方兩個函式都有用到此句,所以移到全域變數共同使用
const list = document.querySelector(".list");
//1. 預先載入 列出所有充電站
function init(){
let str = "";
data.forEach(function(item,index){
let content = '<li>${item.name},${item.charge}</li>';
str+=content;
console.log(str);
})
list.innerHTML = str
}
init();
//2. 判斷使否有確實點擊到button,如果有點擊到確實依照Charge做出顯示
const stationFilter = document.querySelector(".filter");
stationFilter.addEventListener("click",function(e){
if(e.target.value == undefined){
console.log("你沒點擊到")
return ;
}
else{
let str = "";
data.forEach(function(item,index){
//你所點擊到button的value
if(e.target.value == '全部'){
str += '<li>${item.name},${item.charge}</li>'}
else if(e.target.value == item.Charge){
str += '<li>${item.name},${item.charge}</li>'
}
})
list.innerHTML = str;
}
})
//3. 新增邏輯
const stationName = document.querySelector(".stationName");
const stationCharge = document.querySelector(".stationCharge");
const btn = document.querySelector(".btn");
btn.addEventListener("click",function(e){
let obj={}
obj.Charge = stationCharge.value;
obj.name = stationName.value;
data.push(obj);
init();
})
```