13일차 - 2022.03.13

안병욱·2022년 3월 13일
0

오늘 공부한 내용 요약

< 퀴즈 >

1~100까지 숫자가 들어있는 배열을 생성한 후 map을 사용해 짝수만 담긴 배열을 얻어라.


우선 1 ~100의 숫자가 들어있는 배열을 만드는 방법을 고민해보았다.


1) push() 이용

let arr1 = [];

for (let i = 1; i <101; i++) {
  arr1.push(i);
}

alert(arr1);    // 1,2,3...100

2) unshift() 이용
let arr1 = [];

for (let i = 100; i > 0; i--) {
  arr.unshift(i);
}

alert(arr1);     // 1,2,3...100

3) array.fill() 이용

let a = 10;
let b = 10;

let arr1 = Array(a * b).fill().map((arr,i) => {
  return i + 1;
})

alert(arr1);    // 1,2,3...100

4) Array.from 이용
let arr1 = Array.from({length:101},(v,i)=>i);

arr1.shift();

alert(arr1);			// 1,2,3...100

5) [...Array.key()].map 이용

let arr1 = [...Array(101).keys()].map(i => i);

arr1.shift();

alert(arr1);			// 1,2,3...100

6) [...Array].map 이용

let arr1 = [...Array(101)].map((v,i)=> i);

arr1.shift();

alert(arr1);			// 1,2,3...100


1,2번의 방법은 스스로 찾았으나 3~6번은 다른방법이 없을까 검색하다가 추가적으로 알게 되었다.

이제 map을 사용해 짝수만 담길 배열을 얻어보자

map을 사용한 방법으로 시도해보았으나 실력이 아직 부족해 찾지 못하던 차에 학습했던 filter가 눈에 들어와 먼저 다른 방법으로 풀이해보았다.


1) filter()이용

let arr1 = [];

for (let i = 100; i > 0; i--) {
  arr1.unshift(i);
}


let arr2 = arr1.filter( function(n) {
  if(n % 2 == 0) {
    return n;
  }
});

alert(arr2);   // 2,4,6...100

원하는 답이 나왔지만 map을 사용해야 함.


2) map()이용

let arr1 = [];

for (let i = 100; i > 0; i--) {
  arr1.unshift(i);
}

let arr2 = arr1.map((n) => {
  if(n % 2 == 0) {
    return n; 
    };

});

alert(arr2);       // undefined, 2,undefined,4.....100

위의 코드가 정답인 줄 알았으나 filter방식과 달리 홀수들이 사라진 것이 아니라, 반환되지 않은 상태이기에 정의되지 않아 undefined로 남아있게 되었다.

-> 문제에 적합한 방법은 찾았으나 목표로 했던 방식대로 풀이를 하지 못했다.
내일 이어서 해결해 추가적으로 게시예정



참고 사이트

3번 방법

4~6번 방법

느낀점

후에 실력이 쌓이고 이 문제를 다시 봤을때 얼마나 간단한 문제였을까 생각해보았다. 아마 더하기를 처음 배운 상태에서 19 + 11 정도의 수준이 아니였을까.

어쨌든 지금의 나는 개념이 흔들리고 스스로 고민을 덜 해서 그런지 몰라도 시간이 많이 걸렸고 지금도 최선의 방법이였는지 알 수 없다.
앞으로 더 진도 내용을 어느정도 이해하고 훑어보고 넘어가거나 바로 답만 찾는 것이 아니라 개념, 원리를 이해해보고 스스로 고민해보고 다른 방법도 찾아보는 과정을 계속 시도해보겠다.


위의 내용은 공부중 본인이 이해한 내용으로 몇몇 틀린 내용이 있을 수 있습니다.
회독중 발견시 수정하겠습니다

profile
working hard

0개의 댓글