Mission
1. 주어진 배열의 요소가 정수인지 확인
2. 주어진 배열의 요소가 모두 정수의 제곱인지 확인
3. 빈 배열이라면 undefined를, 제곱근이 정수가 아니거나 음의 정수가 있을 경우 false를 출력
Number.isInteger() : 정수인지 확인하는 메서드
Math.sqrt() : 제곱근 계산하는 메서드
✅ filter
const isSquare = (array) => {
if (array.length === 0) return undefined;
let result = array.filter((e) => Number.isInteger(Math.sqrt(e)));
if (result.length === array.length) return true;
else return false;
};
✅ map & reduce
// 1차 시도
const isSquare = array => {
if (array.length === 0) return undefined;
let result = array.map(e => Number.isInteger(Math.sqrt(e))).reduce((total, num) => total + num);
if (result === array.length) return true;
else return false;
};
=> 반례: 배열이 [9]로 요소가 하나만 있는 경우, 제곱근이 정수이지만 false로 출력됨
-> 초기값을 설정해줘야함
// 2차 시도
const isSquare = array => {
if (array.length === 0) return undefined;
let result = array.map(e => Number.isInteger(Math.sqrt(e))).reduce((total, num) => total + num, 0);
if (result === array.length) return true;
else return false;
};
✅ every
const isSquare = array => {
return array.length > 0 ? array.every(num => Number.isInteger(Math.sqrt(num))) : undefined;
};
반응형
'IT Study > JavaScript' 카테고리의 다른 글
[JS] setTimeout의 clearTimeout, 디바운싱, 쓰로틀링 (0) | 2023.09.06 |
---|---|
[JavaScript] 핵심 개념(1) 동기·비동기 | 이벤트 루프 | Promise (0) | 2023.09.04 |
[JS] 🐰기록하고 보기 위한 '놓치기 쉬운 부분들' (DOM요소, setInterval 함수, target, every(), substring)_엘리스3주차 (0) | 2023.09.01 |
[JS] 유사배열객체를 배열로 변환(Array.from, slice.call, map.call, 전개구문, 얕은복사) (0) | 2023.09.01 |
DOM 요소 변형 - insertBefore(), removeChild() (0) | 2023.08.31 |