這是我的陣列方法筆記。不一定詳盡,就給自己做個紀錄。
(詞窮)
forEach
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| const people = [ { name: '小明', money: 500 }, { name: '漂亮阿姨', money: 3000 }, { name: '杰倫', money: 60000 }, { name: '老媽', money: Infinity } ];
people.forEach(function(item, index, array){ console.log(item, index, array); })
|
map
跟forEach很像,但會回傳值
1 2 3 4 5 6 7 8 9 10 11 12
| let peopleCash = people.map(function(item, index, array){ return{ ...item, iCash: item.money +500 } })
console.log(peopleCash);
|
若是沒有使用return, 還是會回傳一個跟原本長度相同的陣列, 但內容會是undefined
用map做篩選:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
const peopleCash = people.map(function(item, index, array){ if(item.money >2000){ return item; }
}) console.log(peopleCash);
0: undefined 1: {name: "漂亮阿姨", money: 3000} 2: {name: "杰倫", money: 60000} 3: {name: "老媽", money: Infinity}
|
沒有通過篩選條件的還是會回傳, 值會是undefined, 所以不適合
filter
會將通過條件的才回傳
filter和map都要傳入一個函式, 參數為item(各元素), index(索引值), array(要傳入的陣列)
1 2 3 4 5 6 7 8
| const filteredPeople = people.filter(function(item, index, array){ if(item.money >2000){ return true; } }); console.log(filteredPeople);
|
find
找到的資料只會回傳第一個符合條件的, 會按照原本的格式回傳
1 2 3 4 5 6 7 8 9 10 11
|
const findPeople = people.find(function(item, index, array){ if(item.money >2000){ return true; } }); console.log(findPeople);
|
every
設定一個檢查條件
若是全部元素都通過, 就回傳true, 反之就false
1 2 3 4 5 6
| const ans = people.every(function(item, i){ return item.money > 50; }); console.log(ans);
|
some
設定一個檢查條件
若是有其中一個元素都通過, 就回傳true, 反之就false
1 2 3 4 5 6 7 8 9
|
const some = people.some(function(item, i){ return item.money > 50000; }); console.log(some);
|
reduce
設定一個檢查條件
若是有其中一個元素都通過, 就回傳true, 反之就false
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
const newNum = people.reduce(function(prev, item, index){ console.log(prev); return prev + item.money; }, 0);
console.log('newNum' + newNum);
|
沒了