
https://school.programmers.co.kr/learn/courses/30/lessons/120894
function solution(numbers) {
let result = [];
const numArr = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
while (numbers.length) {
numArr.forEach((v) => {
if (numbers.startsWith(v)) {
result.push(numArr.indexOf(v));
}
});
numbers = numbers.substr(numArr[result.at(-1)].length);
}
return +result.join("");
}
✔ numbers의 length가 0이 될때까지 numArr의 요소와 numbers의 처음 부분을 비교
✔ 일치 시 numArr의 대응되는 인덱스를 push (영어를 정수로 바꾼 것과 같음)
✔ 삽입 후 numbers의 처음 부분을 버리고 다시 반복문 실행
function solution(numbers) {
const numArr = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
const result = numbers.replace(/zero|one|two|three|four|five|six|seven|eight|nine/g, (v) => {
return numArr.indexOf(v);
});
return +result;
}
✔ replace의 두 번째 인자에 콜백을 넣을 수 있고, 바꾸는 값을 콜백의 인수로 받을 수 있다.
function solution(numbers) {
const numArr = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
for(let i = 0; i < numArr.length; i++){
numbers = numbers.split(numArr[i]).join(i);
}
return +numbers;
}
✔ numArr 요소 전체를 돌면서 그 요소를 구분자로 하는 split 메서드를 사용하는 방식
✔ numbers의 끝부분에 i 삽입 (영어를 정수로 바꾼 것과 같음)
function solution(numbers) {
const numArr = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
return +numArr.reduce((a, c, i) => a.replaceAll(c, i), numbers);
}
✔ 위 방식과 유사하나 reduce 메소드를 활용하였다.