const objArr = [
{
name : 'a',
value : 10
},
{
name: 'b',
value : 20
},
{
name: 'c',
value : 30
}
]
map
const map = (func, iterable) => {
let result = [];
for (const item of iterable) {
result.push(func(item));
}
return result;
};
map(obj=>obj.value , objArr)
filter
const filter = (func, iterable) => {
let result = [];
for (const item of iterable) {
if(func(item)) result.push(item)
}
return result;
};
filter(obj=>obj.value>20 , objArr)
reduce
const reduce = (func, acc, iterable) => {
if (!iterable) {
iterable = acc[Symbol.iterator]();
acc = iterable.next().value;
}
for (const item of iterable) {
acc = func(acc, item);
}
return acc;
};
reduce((a,b)=>a+b , 0 , objArr)
reduce((a,b)=>a+b , objArr)
value 합치기 ( a 빼고 )
console.log(
reduce(
(a, b) => a + b,
filter(
(value) => value > 10,
map((obj) => obj.value, objArr)
)
)
);