[JS] 주소에서 특정값을 제거하는 함수 만들기

yezee·2022년 9월 29일
0

JS

목록 보기
10/18
post-thumbnail

문제

sliceCityFromAddress 함수를 구현해 주세요.

  • sliceCityFromAddress 함수는 address를 인자로 받습니다.
  • address는 주소를 나타내는 string 입니다.
  • 주어진 주소에서 도시를 찾아 삭제하고 새로운 주소를 반환해 주세요.
  • 이 때, 도시는 무조건 "시"라는 단어로 끝납니다. 예) "서울특별시", "성남시"
  • "시"는 주소에 단 한번만 포함되어 있습니다.
  • 예를 들어 다음과 같은 주소가 주어졌다면,
    "경기도 성남시 분당구 중앙공원로 53" / "서울특별시 강남구 테헤란로 427 위워크타워"
    다음과 같은 값이 반환되어야 합니다:
    "경기도 분당구 중앙공원로 53" / "강남구 테헤란로 427 위워크타워"

indexOf()를 이용한 문제해결

function sliceCityFromAddress(address) {

  let arr = address.split(" "); // 공백을 기준으로 쪼갠 배열을 반환한다.
   for (let i in arr) {  // 배열 인덱스 수만큼 조건문을 돌린다.
     if (arr[i].indexOf("시") !== -1) {// 해당 인덱스값에 "시"가 포함되어 있다면
      arr.splice(i,1);  // 해당 인덱스를 가지는 배열의 값 1개를 제거한다. 
    }
  } return arr.join(' '); // 배열로 쪼갰던 값들을 공백을 넣어 하나로 다시 연결해준다.
}

console.log(sliceCityFromAddress("경기도 성남시 분당구 중앙공원로 53"))
  • indexOf()메서드는 특정 문자열이 포함되어있는지 확인하고, 만약 있다면 몇 번 째 순서에 해당 문자열이 있는지 알려 줍니다.
    그리고 해당 문자열이 없다면 -1을 반환합니다.

filter()함수를 이용한 문제해결

function sliceCityFromAddress(address) {

 return address
   .split(" ")
   .filter(arr=>arr.indexOf("시")==-1)
   .join(" ")

}

console.log(sliceCityFromAddress("경기도 성남시 분당구 중앙공원로 53"))

filter()메서드는 true값만 반환하기 때문에 filter(arr=>arr.indexOf("시")==-1)를 통해 ("시"가 없는 문자열==-1)을 반환
만약 문제가 "시"가 있는 문자열을 반환하는 문제였다면
filter(arr=>arr.indexOf("시")!==-1)를 통해 -1이 아닌 값을 filter()함수를 통해 true로 받아야한다

profile
아 그거 뭐였지?

0개의 댓글