Assignment
sliceCityFromAddress 함수를 구현해 주세요.
- sliceCityFromAddress 함수는 address 를 인자로 받습니다.
- address 는 주소를 나타내는 string 입니다.
- 주어진 주소에서 도시를 찾아 삭제하고 새로운 주소를 리턴해 주세요.
- 도시는 무조건 ‘시’로 끝납니다. 예) “서울특별시”, “성남시”
- ‘시’는 주소에 한번만 포함되어 있습니다.
- 예를 들어, 다음과 같은 주소가 주어졌다면다음과 같은 값이 리턴되어야 합니다
"경기도 성남시 분당구 중앙공원로 53"
"경기도 분당구 중앙공원로 53"
먼저 혼자 공부할때 공부했던 것들을 떠올려봤는데 마땅히 생각나는게 없었다. 단어와 단어 사이에 공백이 규칙적으로 있으니 문자열을 공백을 기준으로하여 배열로 반환하고, 특정 단어가 들어간 배열요소를 제거한 뒤 다시 배열을 합치쳐 문장을 만드는 방식으로 해결방법을 찾아봤다.
먼저, split() 함수를 사용하여 문자열을 공백 구분자를 기준으로 하여 배열로 나누었다.
그 후 for문을 통해 address[0] 부터 address[n] 까지 배열전체를 돌도록 하였다.
indexOf함수가 특정 단어가 시작하는 위치를 반환하고, 없는 경우 -1을 반환한다는 점을 이용하여 -1이 아닌 경우 해당 배열요소 한개를 제거하도록 하였다.
그후 join 함수를 이용하여 배열을 문자열로 반환하였다.
function sliceCityFromAddress(address) {
const arr = address.split(" "); //['경기도', '성남시', '분당구', '중앙공원로', '53']
for(i = 0; i < arr.length; i++) {
if(arr[i].indexOf("시", 0) !== -1) {
arr.splice(i,1);
}
} adress2 = arr.join(' ');
return adress2;
}
코드를 쓰고나니 몇 줄 안되는데 굉장히 오래 고민했던 문제였다. 이 함수의 단점으로는 배열에서 딱 한번만 특정 단어를 제거한다는 것이다. 뒤에 단어가 반복해서 나오는 경우 문자가 제거되지 않고 출력이 된다.
'개인공부 기록 > JavaScript' 카테고리의 다른 글
비동기처리(async/await) (0) | 2022.08.07 |
---|---|
[JavaScript] CSV파일 추가하여 출력하기 (0) | 2022.07.31 |
배열에 특정단어를 포함한 문자 삭제하기 (2) (0) | 2022.07.23 |
접근자 프로퍼티 (Getter, Setter) 알아보기 (0) | 2022.07.08 |
이중배열에서 특정 항목을 제거하는 함수 만들기 (0) | 2022.06.24 |