One, map()
map is used to traverse the value of each item in the array and perform a series of operations.
const prices = [19.99, 4.95, 25, 3.50];
let new_prices = [];
for(let i = 0; i < prices.length; i++) {
new_prices.push(prices[i] * 1.06);
}
Writing with map is much easier:
const prices= [19.99, 4.95, 25, 3.50];
let new_prices = prices.map(price => price *1.06);
Two, filter()
The fiter is used to filter the eligible values in the array.
const numbers = [1,2,3,4,5,6,7,8];
let odds = [];
for(let i = 0; i < numbers.length; i++) {
if(numbers[i] % 2 == 1) {
odds.push(numbers[i]);
}
}
Writing with filter is much easier:
constnumbers = [1,2,3,4,5,6,7,8];
let odds = numbers.filter(num => num % 2);
Three, reduce()
Reduce is an accumulator, used to accumulate the value of the entire array, can have an initial value.
const donations = [5, 20, 100, 80, 75];
let total = 10;
for(let i = 0; i < donations.length; i++) {
total += donations[i];
}
It is much easier to write with reduce:
const donations = [5, 20, 100, 80, 75];
let total = donations.reduce((total,donation)=> {
return total + donation;
}, 10);
Reduce is also often used in function composition.
// demo flowRight 参考函数 g(f(x)) flowRight(g, f) ...args 为需要合并的函数 数组
function flowRight (...args){
// value 为执行 函数的初始值
return function (value) {
return args.reverse().reduce(function (acc, func) {
return func(acc)
}, value)
}
}
const compose = (...args) => value => args.reverse().reduce((acc, fnuc) => func(acc) , value)