2019-8-24 개발 이슈 map에 if문 리턴

  • Map을 이용해서 배열을 순회하다가 특정 조건에 걸리는 값을 리턴하고 싶었다.

문제

javascript
const checkDomain = (response) => {
  const headers = stringToJsonObject(base64ToUtf8(response)).payload.headers;
  headers.map((header) => {
    if (header.name === 'From') {
      console.log(header.value);
      return header.value;
    }
  });
}

  • map으로 리스트를 순환하면서 특정 조건에 부합하는 값을 return하고 싶었다. console.log에서는 값이 찍히지만 return은 안된다.

해결

const getDomain = (response) => {
  let domain;
  const headers = stringToJsonObject(base64ToUtf8(response)).payload.headers;
  headers.map((header) => {
    if (header.name === 'From') {
      domain = header.value;
    }
  });
  return domain;
};

오늘의 느낀점

  • 지난번 콜백에서 비슷한 이슈가 생겨서 Promise를 통해 해결했는데, 우선은 function안에 변수를 선언해서 해결을 했다. 좀 더 깔끔한 방법으로 리팩토링을 고민해봐야겠다.
Written on August 24, 2019