배수 구하기,정렬하기

이경준·2020년 11월 25일
0

연습1) 1~30까지의 숫자를 뽑는 함수를 만들어보자

const createNumber = function (n) {
  const arr = [];
  
  for (let i = 1; i <= n; i++) {
    arr.push(i);
  }
  
  return arr;
};

console.log(createNumber(30));
//[1,2,3 ~ 28,29,30]

연습2) <연습1>의 함수를 이용하여 3의배수를 구해보자

const getMultipleOf3 = function () {
  const calculated = createNumber(30).filter(function (n) {
    return n % 3 === 0;
  });
  
  return calculated;
};
console.log(getMultipleOf3());
//[3,6,9,12,15,18, ~ 30]

filter()를 이용하여 배열을 순회하면서 3의 배수를 찾고 값이 true이면 값을 뱉어내는 함수이다.


연습3) 3의배수이지만 5의배수는 아닌 값을 구해보자

const getMultipleNumber = function () {
  const calculated = createNumber(30).filter(function (n) {
    return n % 3 === 0 && !(n % 5 === 0);
  });
  
  return calculated;
};

console.log(getMultipleNumber());
//[3,6,9,12,18,21,24,27]

<연습2>와 같은 공식이지만 filter()의 조건을 하나 더 추가하여 return하였다. 5의배수가 아닌것을 구할때 괄호를 치지 않아 값이 나오지 않아서 당황했다.
사소한 문법도 신경쓰자!


연습4) reduce를 이용하여 <연습3>을 풀어보자

const getMultipleNumber = function () {
  
  const calculated = createNumber(30).reduce(function (acc, curr) {
    if (curr % 3 === 0 && !(curr % 5 === 0)) {
      acc.push(curr);
    }
    return acc;
  }, []);
  return calculated;
};

console.log(getMultipleNumber());
//[3,6,9,12,18,21,24,27]

initialValue를 []로 주어서 첫 acc는[], curr은1이다. 배열을 순회하면서 curr이 조건에 맞는다면 acc로 push하는 방법이다.


연습5) sort()를 이용하여 순서를 정렬해보자

const array = [3, 15, 22, 444, 33, 27, 2321];

array.sort()

console.log(array)
// [15, 22, 2321, 27, 3, 33, 444]

결과를 보면 알다시피 맨 앞자리숫자에 기준을 두고 숫자를 정렬 한것을 볼 수 있다. sort()의 사용법은 array.sort((a,b) => {})이다.
배열을 순회하며 콜백 조건에 맞춰서 정렬하는 매소드이다.

array.sort((a,b) => a-b)
console.log(array)
// [3, 15, 22, 27, 33, 444, 2321]

array.sort((a,b) => b-a)
console.log(array)
// [2321, 444, 33, 27, 22, 15, 3]

b는 배열의 첫번째 숫자이고 a는 두번째이다. 그렇게 배열을 순회할 것이고, a-b했을때 값이 양수,음수,0이냐에 따라서 순서를 정렬한다.


연습6) 3의 배수인 숫자를 정렬하자

const getMultipleOf3 = array.filter(function (n) {
  return n % 3 === 0;
});

multipleOf3.sort((a, b) => a - b);

console.log(getMultipleOf3);
// [3, 15, 27, 33, 444]

연습7) 함수형식으로 만들어보자

const getMultipleOf3 = function (arr) {
  const calculated = arr.filter(function (n) {
    return n % 3 === 0;
  });

  calculated.sort((a, b) => a - b);

  return calculated;
};
console.log(getMultipleOf3(array));
// [3, 15, 27, 33, 444]
profile
내가 기억하기위한 블로그

0개의 댓글

관련 채용 정보