SEB_FE_45(코드스테이츠)/section 2.

데일리코딩 ] 2차원 배열을 이용하여 객체 만들기

YTReeee 2023. 5. 24. 23:24

수도코드

- 2차원 배열? : 내부 요소가 배열로 구성된 배열

- 외부 배열의 요소인 내부 배열의 요소를 이용하여 객체 만들기

- 외부 배열의 길이가 0인 경우에는 무시하기

- 중복되는 키는 가장 처음 만나는 값을 사용하기

- 빈배열을 입력 받으면 빈 객체를 반환하기

1. 함수 내부에 빈 객체(반환할 데이터)를 선언하고 할당한다.

2. 2차원 배열의 요소를 순회하는 반복문을 만든다.

3. 내부 배열의 길이가 0보다 클때 작동해야 한다.

4. 중복되는 키를 방지할 수 있는 조건을 작성해야 한다.

5. 배열의 요소들을 객체의 키와 값으로 설정한다.


위의 내용을 코드로 작성해보면, 아래와 같다.

function convertListToObject(arr) {
  let obj = {}
  for(let i = 0; i < arr.length; i++){
    if(arr[i].length > 0 && obj[arr[i][0]] === undefined){
        obj[arr[i][0]]=arr[i][1];
      }
    }
  return obj;
}

문제를 풀면서 (obj[arr[i][0]] === undefined) 조건이 왜 들어가야 하는지 이해가 되지 않았다. 이에 챗 GPT에게 물어보았다.

출처 : 챗GPT https://chat.openai.com/

위 코드가 중복키를 방지해줄 수 있는 이유는, 해당 키에 아무 값도 할당되어 있지 않기 때문이다(undefined).

이후 중복된 키가 조회될 경우, 해당 키에 이미 할당된 값이 있기 때문에 조건식이 false로 평가됨에 따라 이하 코드가 작동되지 않고, 다음 순서로 지나가게 되는 것이다.


오늘 풀어본 데일리코딩 문제는 이전에 블로깅했던 데일리 코딩 문제와 유사한 부분이 있었다.

다만, 중복 키를 조회하는 코드(obj[arr[i][0]] === undefined)를 생각해내지 못했다.

할당된 값이 없는 경우, 코드를 계속 진행하게 하는 조건식을 어떻게 적어야 하는지 배울 수 있었다.