- 숫자배열에
m
이 있으면rn
으로 변경해서 returnrn
이 있으면 그대로 returnm
이 없으면 그대로 return- 숫자배열은 영소문자로만 구성
const solution = (rny_string) => rny_string.replace(/m/g, 'rn');
메서드만 잘 알고 있으면 쉬운 문제이긴 했다.
문자열 요소를 치환해주는 replace()
를 사용하여,
문자열 내 m
을 모조리 찾아주는 정규식표현을 첫번째 파라미터에 입력,
두번째 파라미터에는 치환시킬 요소 넣어주면 된다.
replace()를 쓸 생각 하기 전에 여러 시도를 하고 검색을 했는데,
어머낫 중요한 지식을 얻었다..! 🪄 👇🏻
+++
나의 첫 시도는, m
의 index
를 찾아 그 index
를 활용하여 splice()
를 사용하려고 했다.
근데 자꾸 TypeError(splice is not a function)
가 뜨는 것 ! 🤨
string
이 배열로도 사용되는 걸로 알아서, 배열 메소드를 사용한건데 무엇이 문제인가! 하고 지피티오빠한테 물어봤더니...
string
은 자바스크립트에서 원시 타입으로,불변한 값(immutable value)
splice()
는 원본 배열에 변경을 일으키는 메서드로, 불변한 값에 사용하지 못하는 메서드
라는 지식을 얻을 수 있었다. JS 기초 구멍 하나씩 메꾸는 중 ...
const solution = (rny_string) => rny_string.replaceAll('m', 'rn');
사실 replaceAll()
쓰면 정규식 표현 안 써도 된다.
첫번째 파라미터 요소를 모조리 찾아주는 기능이 내장돼있다.
function solution(rny_string) {
var answer = '';
return [...rny_string].map(e => e == 'm' ? 'rn' : e).join("");
}
map()
을 사용하여 이렇게 풀 수도 있겠구나 싶어서, 참고하려고 가져왔다.
+ 설명 👇🏻
const fakeString = 'macdonaldmm'
function solution(s) {
console.log([...s])
// [ 'm', 'a', 'c', 'd', 'o', 'n', 'a', 'l', 'd', 'm', 'm' ]
// 1. spread operator를 사용하여 문자열을 배열로 만들어줌
console.log([...s].map(el => el === 'm' ? 'rn' : el))
// [ 'rn', 'a', 'c', 'd', 'o', 'n', 'a', 'l', 'd', 'rn', 'rn' ]
// 2. map() 사용하여 새 배열로 반환
console.log([...s].map(el => el === 'm' ? 'rn' : el).join('')) // 'rnacdonaldrnrn'
// 3. join의 구분자(seperator)를 아무것도 없이('') 주어 한 단어로 합침
return [...s].map(el => el === 'm' ? 'rn' : el).join("")
}
solution(fakeString); // 'rnacdonaldrnrn'
메소드를 사용하고 응용하며 기초를 배워가는 재미가 있다.
오늘도 코테연습 끝! 💫