TIL 36 (2020.09.07) JS

jeanbaek·2020년 9월 7일
0

TIL (Today I Learned)

목록 보기
36/106

사전 스터디 팀원들과 자바스크립트 문제 풀이를 함께 했다.
문제를 보고 각자가 생각하는 방식대로 코드를 짜서 발표하는 게 주된 내용이었다.

혼자 풀려고 할 때는 어떻게 코드를 짜야할 지 머리를 싸맸던 문제들도
막상 답을 마주하면 간단했다.

분명 다 배운 것들인데... 왜 막상 사용하려 하면 생각이 나지 않을까? 허허...
이제 곧 일주일 후에 위코드가 시작하는데.. 잘 해나갈 수 있을까.. 걱정이 든다 😹😹

오늘 문제를 풀면서 새롭게 익힌 메소드를 블로그에 적어가면서 코드 복기를 하려고 한다.

오늘 익힌 메소드

  • delete num[3]
    : num array에 있는 3번 인덱스의 값만 지운다. (index는 남아있기 때문에 <1 empty item>이라고 출력된다.)

  • arr.splice(2, 0, 10000);
    : 2번 인덱스 자리에 10000을 넣고 싶을 때 이용한다.
    (push는 맨 뒷자리에만 넣을 수 있다.)

  • .reverse();
    : array의 인덱스 마지막 값부터 출력한다.

let a = '거꾸로'.split('')

a.reverse();
console.log(a.join('')) // 로꾸거

'거꾸로'를 for를 이용해서 '로꾸거'로 출력하고 싶었는데,
for (letter of a)에서 마지막 letter부터 출력할 수 있는 방법이 구글링을 하고 생각을 해봐도 나오지 않는다.

아쉽다. 조금 더 공부해서 꼭 알아내고 싶다.

(수정) 성공했다!!~~

const a = '거꾸로'.split('');
let b = [''];
for (let i=2; i > -1; i--) {
  b += a[i]
}
console.log(b); // 로꾸거
  • .split()
    : 문자열을 배열처럼 한 글자씩 떼어 저장한다.
    .split(' ')을 입력하면 space 1개를 기준으로 문자열을 떼어놓는다.

  • prompt, alert
    : console에서만 동작하는 명령어로, 터미널에서는 동작하지 않는다.
    팝업을 띄워 값을 입력할 수 있게 해준다.

  • parseInt(n, 10);
    : 10진수의 형태의 숫자로 데이터 타입을 변환한다.

  • Math.floor()
    : 소수점 자리를 모두 버린다.

  • Math.PI
    : 원주율 값으로 동작한다.

  • Math.pow()
    : a의 b승 값을 구할 때, 아래와 같이 숫자를 입력하면 값을 출력해준다.

console.log(Math.pow(2, 3));
// expected output: 8
  • array.length
    : 배열 내에 값이 몇 개 있는 지 알려준다.

추가 문제

  • 다음 중 set을 만드는 방법으로 올바른 것을 모두 고르시오.

1) var x = {1,2,3};
2) var x = {};
3) var x = new Set('javascript');
4) var x = new Set(range(5));
5) var x = new Set();

우선 set은 중복된 값을 가질 수 없는 리스트이다. 이 값에는 순서가 없다.

// 새로운 set 만들 때
const foo = new Set();
console.log(foo) // Set {}

const bar = new Set([ 1, 2, 3 ]);
console.log(bar) // Set { 1, 2, 3 }

따라서 새로운 set을 만들 때, new Set() 혹은 new Set(데이터)의 형식으로 만들 수 있다.

답은 3번, 5번!

  • 이름이 입력되면 전부 대문자로 출력되는 프로그램을 만들어주세요.
const a = prompt('Type your name.')

console.log(a.toUpperCase());
  • 태양계 내의 행성의 한글 이름을 입력하면 영어 이름을 반환하는 프로그램을 만들어 주세요.
const ask = prompt('태양계 내의 행성 이름을 입력하세요. 영어이름을 알려드립니다.')

function translation() {
  let arr1 = ['수성', '금성', '지구', '화성', '목성', '토성', '천왕성', '해왕성'];
  let arr2 = ['Mercury', 'Venus', 'Earth', 'Mars', 'Jupiter', 'Saturn', 'Uranus', 'Neptune'];
  for (let i=0; i <= 7; i++) {
  if (ask === arr1[i]) {
    alert(arr2[i])
  }
 }
}

translation();
  • 입력이 아래와 같을 때,
Yujin Hyewon
70 100

출력이 다음과 같도록 하시오.

{'Yujin': 70, 'Hyewon': 100}

만들어보긴 했는데 출력값에 key와 value가 꼭 들어간다.
다른 방법도 시도해보고 싶긴 하지만, 우선 오늘은 여기까지.

const a = prompt("공백을 두고 이름을 입력하세요").split(' ');
const b = prompt("공백을 두고 점수를 입력하세요").split(' ');

for (let i = 0; i < a.length; i++) {
  const key = a[i];
  const value = b[i];
  const match = {key, value};
  console.log(match);
};

// {key: "은진", value: "100"}
// {key: "예진", value: "90"}

나는 함수 내에 if else를 만들어 조건에 따라 다른 값을 출력하는 코드를 짜는데 강점이 있는 것 같다. 이런 류의 문제가 나오면 어떻게 코드를 짜야할 지 바로 머릿속에 그려지고, 깔끔하게 코드가 나온다.

그런데 이외의 메소드들은 아직 익숙해지지 못한 것 같다.

다른 메소드들도 내 것처럼 이용할 수 있도록 내 힘으로 코드를 더 많이 짜봐야겠다.

profile
💡 Software Engineer - F.E

0개의 댓글