forEach
使用 forEach
方法遍歷陣列,對每個元素執行指定的函數。
1 2 3 4 5 6 7 8
| let data = [1, 2, 3]; data.forEach(function(item, index, array) { console.log(item, index, array); });
|
map
map
方法能將原始陣列運算後,重新組合並回傳一個新陣列。
- 不會影響原本的陣列。
- 若未使用
return
,則會回傳 undefined
。
1 2 3 4 5 6
| let data = [1, 2, 3]; let newData = data.map(function(item) { return item * item; }); console.log(data); console.log(newData);
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| let data = [1, 5, 10, 8, 4, 2]; let newData = data.map(function(item) { return item > 5; });
let newData1 = data.map(function(item) { let obj = {}; obj.checkNum = item > 5; return obj; }); console.log(data); console.log(newData); console.log(newData1);
|
forEach 與 map 差別
1 2 3 4 5 6 7
| let data = [1, 2, 3]; let newData = data.forEach(function(item) { return item * item; }); console.log(data);
console.log(newData);
|
filter
使用 filter
方法篩選出符合條件的元素,並回傳新陣列。
1 2 3 4 5 6
| let data = [1, 4, 10, 15]; let newData = data.filter(function(item) { return item > 5; }); console.log(data); console.log(newData);
|
範例:篩選及格的學生。
1 2 3 4 5 6 7 8 9 10 11 12
| let scoreData = [ { name: '阿呆', score: 100 }, { name: '阿美', score: 61 }, { name: '阿新', score: 40 }, ];
let filterScore = scoreData.filter(function(item) { return item.score >= 60; }); console.log(filterScore);
|
find
使用 find
方法尋找第一筆符合條件的元素。
1 2 3 4 5 6
| let data = [1, 4, 10, 15]; let newData = data.find(function(item) { return item > 5; }); console.log(data); console.log(newData);
|
findIndex
使用 findIndex
方法尋找第一筆符合條件的元素的索引值。
1 2 3 4 5 6
| let data = [10, 20, 30]; let newData = data.findIndex(function(item) { return item >= 15; }); console.log(data); console.log(newData);
|
reduce
使用 reduce
方法將陣列內數值進行累加。
1 2 3 4 5
| const numbers = [1, 2, 3, 4, 5]; const total = numbers.reduce((a, b) => { return a + b; }, 0); console.log(total);
|
at
使用 at
方法尋找陣列位置資料。
1 2 3
| const array1 = [5, 12, 8, 130, 44, 66, 99, 10, 50]; console.log(array1.at(-1)); console.log(array1.at(-3));
|
concat
使用 concat
方法合併兩個或多個陣列。
1 2 3 4
| const array1 = ['a', 'b', 'c']; const array2 = ['d', 'e', 'f']; const array3 = array1.concat(array2); console.log(array3);
|
join
使用 join
方法將陣列元素合併為字串。
1 2 3 4 5 6 7 8
| const arr = ['nick', 'chang']; console.log(arr.join(' '));
const obj = [{ id: 1 }, { id: 2 }]; console.log(obj.join(' '));
const integrated = [1, 2, 'asd', '!@#df', [123, 999, { id: 100 }]]; console.log(integrated.join('-'));
|
flat()
flat()
方法用於將多維陣列展平為一個單層陣列。它接受一個可選的參數,指定展平的層數。
基本用法
1 2 3
| var arr1 = [1, 2, [3, 4]]; console.log(arr1.flat());
|
展平一層
1 2 3
| var arr2 = [1, 2, [3, 4, [5, 6]]]; console.log(arr2.flat());
|
展平多層
1 2 3
| var arr3 = [1, 2, [3, 4, [5, 6]]]; console.log(arr3.flat(2));
|
展平至任意深度
使用 Infinity
作為參數,可以展開任意深度的巢狀陣列:
1 2 3
| var arr4 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]]; console.log(arr4.flat(Infinity));
|
處理複雜結構
1 2 3
| var arr5 = [1, 2, 3, 4, [1, 2, 3, [1, 2, 3, [1, 2, 3]]], 5, ["string", { type: "物件" }]]; console.log(arr5.flat(Infinity));
|
移除空項
flat()
方法還可以用來移除陣列中的空項:
1 2 3
| var arr6 = [1, 2, , 4, 5]; console.log(arr6.flat());
|