IT Study/JavaScript

[JS] 제곱 리스트를 찾는 방법(filter, map, reduce, every)

짹짹체유 2023. 9. 1. 20:54

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;
};
반응형