07
04

1. printKeyValue

  • 객체를 입력받아  string 타입으로 key: value의 형식으로 리턴한다.
  • 각 키와 값의 사이에 줄바꿈으로 다른 요소라는 것을 표시한다.
function printKeyValue(obj) {
  let result = ''; // string 타입으로 리턴해야 하기 때문에 빈 스트링을 만든다.
  for(let key in obj) { // for...in 으로 객체를 돌면서 key 값을 구한다.
    result = result + `${[key]}: ${obj[key]}\n` // 벡틱을 이용해 한줄에 알맞은 요소를 넣고 result에 쌓는다.
  }
  return result; // 완성된 result를 리턴한다.
}
  • 줄 바꿈은 '\n' 이다.
  • 만약, Object.keys(obj)를 사용한다면, 모든 키를 받아 버리기 때문에 키 하나하나씩을 선택할 수 없게 된다.

2. arrayInSameKey

  • 배열과 객체를 받아, 배열의 요소가 객체의 키와 같을경우 새로운 객체 안에 넣어서 리턴한다.
  • 같지 않은 요소는 무시한다.
function arrayInSameKey(arr, obj) {
  let result = {}; // 빈 객체를 만든다.
  for(let key in obj) { // 반복문으로 객체안의 Key를 추출한다.
    for(let i = 0; i < arr.length; i++) { // arr를 하나씩 확인하면서,
      if(key === arr[i]) { // 키와 같은 데이터가 있는지 검색한다.
        result[key] = obj[key] // 같은 데이터를 result안에 같은 키와 값은 obj[key]에서 가져와 할당한다.
      }
    }
  }
  return result; // 완성된 객체를 리턴한다.
}
  • 이중반복문이 복잡하다고 생각하고, 쓰지 않고 어떻게든 풀어보려고 했지만 이것이 가장 간단한 방법으로 보인다.
  • 리펙토링도 좋지만, 일단 알고 있는 답을 애써 무시하고 처음부터 다른 방법으로 찾으려 하는 것 보다, 일단, 알고 있는 방식으로 답을 작성 해 놓고 이후, 리펙토링을 통해 코드를 정리할 생각을 해야한다.
COMMENT