TIL : JavaScript - indexOf, slice

Perfume·2020년 9월 20일
0

JavaScript

목록 보기
9/13

자바스크립트에서 문자열에 특정 문자열이 있는지 확인하고, 만약 있다면 몇 번째 순서에 해당 문자열이 있는지 확인할 수 있는 간단한 방법이 있다.

바로 indexOf() 함수다.

indexOf()

indexOf() 메서드는 배열에서 지정된 요소를 찾을 수 있는 첫 번째 인덱스를 반환하고 존재하지 않으면 -1을 반환한다.

이걸 어디에 쓰나 싶겠지만 의외로 활용은 무궁무진하다. 댓글에 욕설이 포함될 때 댓글 작성을 못하게 한다거나, 오타를 수정한다거나 할 때 유용하게 쓸 수 있다.

사용 방법 역시 간단하다.

"문자열".indexOf("찾을 문자")

다음 예시는 '프로래밍'이라는 오타를 '프로그래밍'으로 바꿔주는 코드다.

let info = "JavaScript는 프로래밍 언어이다.";
let firstChar = info.indexOf("프로래밍"); 

console.log(info, firstChar);

if (firstChar !== -1) { 
  info = info.slice(0, firstChar) + "프로그래밍" + info.slice(firstChar+4, info.length); 
}
console.log(info);

여기서 새로운 개념도 발견할 수 있다. 바로 slice다.

slice()

배열 메서드 중 하나인 slice는 배열의 일부분(slice) 혹은 부분 배열(subarray)을 반환한다.

slice() 메서드는 전달 인자를 두 개 받는데, 각 인자는 반환될 부분의 처음과 끝을 각각 명시한다.반환되는 배열은 첫 번째 전달인자가 지정하는 위치부터 두 번째 전달인자가 지정하는 위치를 제외한 그 사이의 모든 원소를 포함한다.

만약 전달 인자를 하나만 명시하면, 그 위치에서 배열 끝까지의 모든 원소를 포함하는 부분 배열을 반환한다.

만약 전달 인자가 음수라면 배열의 마지막 원소에서 상대적인 위치로 배열 원소를 지정합니다.

예를 들어, 전달 인자 -1은 배열의 마지막 원소를 가리키며, 전달인자 -3은 배열의 마지막 원소부터 앞쪽으로 세 번째 원소를 가리킨다.

참조: https://webclub.tistory.com/326

그리고 이 개념들을 활용해 나를 어렵게 한 문제!

sliceCityFromAddress 함수를 구현해 주세요.

  • sliceCityFromAddress 함수는 address 인자를 받습니다.
  • address 인자에는 주소를 나타내는 string이 주어집니다.
  • 주어진 주소가 어느 도시인지를 찾아내서, 해당 주소에서 도시 부분만 삭제한 새로운 주소를 리턴해 주세요.

주소는 무조건 "시" 로 끝납니다. 예를 들어, "서울시".
"도" 와 "시" 는 주소에 한번 밖에 포함되어 있지 않습니다.

이것때문에 얼마나 고민했는지.. 결국 내가 낸 답은

function sliceCityFromAddress(address) {
// your code here

let province = address.indexOf('도');
let si= address.indexOf('시');

// 주소가 ㅇㅇ시로 시작할 때

if (province==-1) {
return address.slice(si+2)
}

// 주소가 ㅁㅁ도로 시작할 때

else {
return address.slice(0,province+2) + address.slice(si+2)
;}

}

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

sliceCityFromAddress("서울시 강남구 테헤란로 427 위워크타워");

profile
공부하는 즐거움

0개의 댓글