본문 바로가기
자바스크립트

[Javascript] 모르는 부분

by devebucks 2022. 9. 20.
728x90

reduce

javascript에서 가장 강력크한 기능?이다?

 

 

reduce 함수는 네 개의 인자를 가진다.
1. 누산기(acc)
2. 현재 값(cur)
3. 현재 인덱스(idx)
4. 원본 배열(src)


리듀서 함수의 반환 값은 누산기에 할당되고, 누산기는 순회 중 유지되므로, 결국 최종 결과는 하나의 값이 된다.

배열에 각 요소에 대해 함수를 실행하고 누적된 값을 출력할 때 용이하다.

const arr = [1,2,3,4,5];
const result = arr.reduce((acc, cur, idx) => {return acc +=cur}, 0);
console.log(result); // 15

const arr2 = [1,2,3,4,5]
const result2 = arr2.reduce((acc, cur, idx) => {return acc += cur}, 10)
console.log(result2); // 25

초기값: 0, acc는 0으로 시작, 배열의 첫번째 요소부터 acc에 자신의 값인 cur을 더해간다.

acc가 계속 누적이 되는 값이다.

cur는 루프의 차례값이다. 현재값으로 보면 된다.

1+2+3+4+5=15

초기값: 10, acc는 10으로 시작, ... 10+1+2+3+4+5=25

 

두번째 예시

const numbers = [-2, -5, 4, 6];
const result = numbers.reduce((acc, cur, idx) => {
  if(cur < 0) {
    acc[0] = acc[0] + cur;
  }
  else if(cur > 0) {
    acc[1] = acc[1] + cur;
  }
  return acc;
},[0,0]);

console.log(result); // [-7, 10]

 

reduce를 map처럼 사용하기

const arr = [1, 2, 3, 4, 5];

// 1씩 더한 값을 반환
const mapList = arr.map((item) => item + 1);
console.log(mapList); // 2,3,4,5,6

const reduceList = arr.reduce((acc, cur) => {
  acc.push(cur + 1);
  return acc; // 리턴을 해줘야 먹힌다.
}, []);
console.log(reduceList); // 2,3,4,5,6

 

 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

Set

객체는 자료형에 관계없이 '원시값'과 '객체 참조' 모두 유일한 값을 저장할 수 있다.

//이게 된다고? ㅋㅋㅋ -> 안 됨
const dupArr = [{a:1}, {a:1}];
const setArr = new Set(dupArr)
console.log(setArr) // [{a:1}, {a:1}]


setArr.has({a:1}) // false

안 됨

.

.

.

원시타입과 Nan 그리고 undefined 정도는 걸러지는 것 같다.

인스턴스 속성

Set.prototype.size // 숫자를 반환한다.

Set.prototype.add(Value) // set에 추가한다.

Set.prototype.clear() // 전부 삭제


Set.prototype.delete(Value) // 특정 원소 삭제


Set.prototype.has(Value) // 여부

 

 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Set

Array.from()

 

 

curry

 

함수형 프로그래밍

728x90

댓글