for(let item of array) { } // FP // return array array.map((item, index) => {})
for(let item of array) { if(item === _item) { } } // FP // return item 匹配條件的第一項 array.find(item => item === _item)
for(let item of array) { if(item > someValue) { } } // FP // return array array.filter(item => item > someValue)
reduce() 方法接收一個函數做爲累加器,數組中的每一個值從左到右開始執行方法,最終返回一個值。javascript
array.reduce((preValue, currentValue, index, array) => {}, initialValue); // fn(fn(fn(initialValue, array[0]), array[1]), array[2]) // 假如array = [1, 2, 3] // 執行 array.reduce((preValue, currentValue) => preValue + currentValue, 0); // 執行過程爲 // step 1. return 0 + 1 // step 2. return 1 + 2 // step 3. return 3 + 3
let array = [1, 2, 3, 4, 5]; let sum = 0; for(let item of array) { sum += item; } // FP let sum = array.reduce((pre, cur) => pre + cur, 0);
// 將'/aaa/bbb/ccc' 解析爲 ['/aaa', '/aaa/bbb', '/aaa/bbb/ccc'] const fn = path => path.split('/') .map(item => '/' + item) .reduce((pre, cur, index) => pre.concat(index < 1 ? '' : pre[index - 1] + cur), []) .filter((item, index) => index > 0);