반응형
여러개의 값들 중에 하나만 true/truthy인지 구분하기 위한 함수 입니다.
function onlyOne(...args) {
return args.reduce((acc, arg) => (acc += arg), 0) === 1;
}
const a = true;
const b = false;
console.log(onlyOne(a, b, b, b)); // true
console.log(onlyOne(a, a, b, b)); // false
코드 도출 과정
Rest 파라미터
...args부분은 Rest 파라미터로 정해지지 않은 인수를 배열로 args라는 변수에 담을 수 있도록 합니다.
Reduce 메서드
Reduce 메서드는 배열에 정해진 reducer함수를 실행하고 하나의 결과값을 반환해줍니다.
acc: 누산기, 두 번째 인자 0으로 초기화함
arg: args배열의 각각의 값
acc += arg에서 boolean의 암묵적인 형 변환이 일어납니다. true -> 1, false -> 0
해당 값을 acc 변수로 다 더해 최종적으로 합해진 값이 1이면 true가 한개고 아닐경우는 한개가 아닙니다.
참고
YOU DON'T KNOW JS
Reduce https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
Rest 파라미터 https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Functions/rest_parameters
반응형
'Web > JavaScript' 카테고리의 다른 글
라인 피드와 캐리지 리턴 (0) | 2022.04.07 |
---|---|
자주 사용하는 정규표현식 [ javascript ] (0) | 2021.09.08 |
&&와 || 연산자 (0) | 2021.07.19 |
간단하게 해주는 js 표현식 정리 (0) | 2021.07.17 |
javascript의 타입을 확인하는 typeof (0) | 2021.07.16 |