1)map,filter,reduce

JEON HAN BIT·2023년 6월 14일
0

javaScript

목록 보기
6/6
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) // [10,20,30]

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) // [ { name: 'c', value: 30 } ]

reduce

const reduce = (func, acc, iterable) => {
  if (!iterable) {
    iterable = acc[Symbol.iterator](); 
    acc = iterable.next().value; // iterable의 초기값
  }
  for (const item of iterable) {
    acc = func(acc, item); 
  }
  return acc;
};
reduce((a,b)=>a+b , 0 , objArr) // NAN : undefined + 10 
reduce((a,b)=>a+b , objArr) // 60

value 합치기 ( a 빼고 )

console.log(
  reduce(
    (a, b) => a + b,
    filter(
      (value) => value > 10,
      map((obj) => obj.value, objArr) 
    )
  )
);

0개의 댓글