split (), fill() , join ()

핸드폰 번호가 담긴 문자열 phone이 주어질 때,
뒤의 4자리를 "*"로 바꿔서 리턴해주세요.


function solution(phone) {
  let arr = phone.split("");
  arr = arr.fill("*", 7, 11)
  return arr.join("")
}

console.log("결과", solution("01012345678"));

변수이름.split()
소괄호 속에 넣은 것으로 문자열을 분해한다.
매개변수는 최대 두개를 줄 수 있고
앞 부분은 분해할 기점이 되는 값을 separator
뒤 부분은 분해를 할 횟수인 limit 값을 줄 수 있다.

중요! 배열의 형태로 값을 리턴한다

문제 속에서는 ("")로 모든 문자를 다 잘라버렸는데,
MDN 에서는 이렇게 사용하면 써로게이트 페어가 망가질 수도 있다고
사용하지 않는 것을 권장하고 있다.
뭐 다른 것들이 있으니까... 있다고 언급해서 그걸 적어넣으려고 했는데 MDN에서 그것도 쓰지않는게 좋데...뭐 어쩌라고...? 뭔가 또 있겠지?

Array.fill()
최대 3개의 매개변수를 줄 수 있는데
무엇으로 바꿀지 값을 주는 value
스타트 지점을 잡아주는 start 끝나는 지점을 잡아주는 end가 존재한다
따로 선언을 하지 않는다면 start와 end값은 0의 값을 가지고 있다.

주의할점! 시작값과 종료값은 시작값은 이상으로 시작하는 반면
종료값은 미만으로 치는 경우가 많으니 주의하도록 하자.

아래 사진도 4,6인데 4이상 6미만이라 2개만 변환된 모습을 볼 수 있다.

이거 글을 쓰려고 ㅋㅋ 예시 캡쳐하려고 계속 하는데 안되길래 왜 안되는거지? 라고 고민을 하고 있었는데
배열이 아니면 분해가 안된다^^....... 나처럼 멍청한짓 하지말자

Array.join()
뒤에 적어놓은 값에 따라 합쳐버린다.
쪼개버린(?) 문자열을 다시 하나로 합칠 때 많이 사용하는 것 같은데, 그 외에서 사용할 일이 있다면 추가해보겠다.

최상단 문제 풀이

  1. 받은 문자열을 배열로 만들어서
  2. 특정 인덱스값부터 특정 인덱스값까지 *로 변환해주고
  3. 다시 배열을 합쳐서 문자열로 리턴했다

좋은 웹페이지 즐겨찾기