1. map, filter, reduce
1) map
- 모든 값들을 함수의 리턴 값에 해당하는 값으로 대체해 반환
const map = (f, iter) => {
let res = [];
for (const p of iter) {
res.push(f(p));
}
return res;
};
map(p => p.name, products);
map(el => el.nodeName, document.querySelectorAll('*'));
let m = new Map();
m.set('a', 10)
m.set('b', 20);
log(map(([k, a]) => [k, a*2], m));
2) filter
- 이터러블에서 조건에 해당하는 값들만 모은 이터러블을 반환하는 함수
const filter = (f, iter) => {
let res = [];
for (const a of products) {
if (f(a)) res.push(a)
}
}
filter(p=>p.price < 20000, products);
3) reduce
- 값을 축약하는 함수
- 이터러블 값을 하나로 축약하는 역할
- 재귀적으로 동작함.
const reduce = (f, acc, iter) => {
if (!iter) {
iter = acc[Symbol.iterator]();
acc = iter.next().value;
}
for (const a of iter) {
acc = f(acc, a);
}
return acc;
}
의문 해결
console.log(reduce(add, [1, 2, 3]));