[TIL] 항해99 2주차 2DAY

seungbox·2023년 2월 14일
0

TIL

목록 보기
2/13

함수와 객체에 대해 다시금 공부를 시작했다.
구조 분해 할당이 아직 이해가 힘들었어서 계속 읽어보고 공부를 해봐야겠다고 생각했다.

스터디에서 내가 맡은 부분은 객체의 프로퍼티와 해시와 자바스크립트 객체의 차이점을 설명하는 부분이다.

객체와 함수

  1. 자바스크립트 객체의 프로퍼티란?
객체안에 선언되 key와 value의 집합
const obj = {
  key : value,
  key2 : value2
}
프로퍼티는 프로퍼티 key로 유일하게 식별할 수 있다.
그러므로 프로퍼티의 key는 프로퍼티를 식별하기 위한 식별자이다.
  1. 단순한 해시와 자바스크립트 객체의 차이점이란?
해쉬는 해쉬 함수를 통해 자료를 저장하는 데이터 기법
객체는 key와 value로 된 프로퍼티를 저장한 것
함수를 쓴 것이 아닌 단순하게 저장된 방식이 객체이다.

코딩테스트를 통한 회고

1. 문제설명

문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.

       strings	       n	       return
["sun", "bed", "car"]	1	["car", "bed", "sun"]
["abce", "abcd", "cdx"]	2	["abcd", "abce", "cdx"]

2. 답

function solution(strings, n) {
	return strings.sort((a, b) => {
      let firstString = a[n];
      let secondString = b[n];
      
      if(firstString > secondString) {
      	return 1
      } else if( firstString < secondString) {
      	return -1
      } else {
      	return (a > b) ? 1 : -1
      }
    });
}

a[n]이라는 string을 firstString로 저장을 하고
b[n]이라는 string를 secondString로 저장을 한다음 if문으로 두 값을 비교를 하여 결과를 내면 된다고 생각을 하고 작성을 시작했다.

  • a.sort() 메소드는 리턴값이 음수(-1)일 경우, a를 앞 인덱스에 정렬/ 양수(1)일 경우는 b를 앞 인덱스에 정렬한다.
	if(firstString > secondString) {
    	return 1 //a가 먼저
    } else if( firstString < secondString) {
    	return -1 //b가 먼저
    }

각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다.

if(firstString < secondString) return -1; //오름차순
if(firstString > secondString) return 1; //콘솔에서는 아무것도 안 바뀌고 그대로 출력

인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전 순으로 앞선 문자열이 앞쪽에 위치합니다.

if(a < b) return -1; //오름차순
if(a > b) return 1; //콘솔에서는 아무것도 안 바뀌고 그대로 출력
=> (a > b) ? 1 : -1

sort라는 부분이 아직 생소한 것 같아 프로젝트에선 어떻게 쓰이는지 궁금하여 찾아보고 사용해봐야겠다.

profile
함께 하는 개발자

0개의 댓글