[ 문제 ]
입출력 예시로 문제를 설명하자면, 입력받은 배열 중 0번째 요소가 객체의 key, 마지막 요소가 객체의 value로 만들어 그 객체를 반환해야한다.
그리고 빈 배열을 입력받은 경우, 빈 객체를 반환해야한다.
[ 풀이 ]
내가 작성한 로직은 아래와 같다.
1/ 먼저 빈 객체를 변수에 할당한다.
2/ 만약 배열의 길이가 0이라면(즉, 빈 배열이라면) 빈 객체를 그대로 반환한다.
3/ 빈 배열이 아니라면, 대괄호 표기법(bracket notation)을 사용하여 동적으로 생성시킨다.
4/ 객체를 할당한 변수를 반환한다.
function transformFirstAndLast(arr) {
let obj = {}; //변수를 선언하고, 빈 객체를 할당한다.
if(arr.length === 0){ //만약 arr가 빈 배열이라면 그대로 빈 객체를 반환한다.
return obj;
}
let key = arr[0]; //배열의 첫번째 요소를 key라는 변수에 할당한다.
obj[key] = arr[arr.length-1]; //obj라는 빈 객체에 key는 arr[0], value는 arr[arr.length-1]를 추가한다.
return obj; //객체 obj를 반환한다.
}
** 여기서 주의해야 할 부분!!
객체의 프로퍼티에 접근하는 방법은 2가지가 있다.
1. 마침표 표기법(Dot notation)
만약 obj[key]대신 obj.key = arr[arr.length-1]를 사용했다면,
"key"라는 글자 자체가 키값이 된다.
즉, obj = {key : ...} 이렇게 "key"글자 그대로 들어가게 된다.
2. 대괄호 표기법(Bracket notation)
대괄호 표기법에서는 프로퍼티 키를 반드시 따옴표를 감싼 문자열이어야 한다.
하지만 위에서는 왜 key그대로, "" 따옴표로 감싸지 않았을까?
--> 그건바로 key가 변수이기 때문이다!
동적으로 변하는 변수일 때는 반드시 "" 따옴표 없이 사용해야 한다!
[ 레퍼런스 ]
문제를 다 풀고 레퍼런스를 보는 것도 도움이 많이 되는 것 같다.
이번에도 테스트 통과 후 레퍼런스를 보았다.
나는 9줄이나 썼고, return obj;도 중복으로 사용했는데 이렇게 간단하게 코드를 짤 수도 있구나..
많이 공부해야지..!
나도 이렇게 깔끔한 코드를 쓸 수 있도록 더더욱 노력해야겠다!
'자료구조알고리즘 > 코드스테이츠 Coplit' 카테고리의 다른 글
06_letterCapitalize (0) | 2022.02.09 |
---|---|
05_firstReverse (0) | 2022.02.09 |
04_firstCharacter (0) | 2022.02.07 |
03_powerOfTwo (0) | 2022.02.05 |
02_computeWhenDouble (0) | 2022.02.04 |