영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers
가 매개변수로 주어질 때, numbers
를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.
numbers
는 소문자로만 구성되어 있습니다.numbers
는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있습니다.1 ≤ numbers의 길이 ≤ 50
numbers
의 맨 앞에 올 수 없습니다.function solution(numbers) {
var answer = 0;
var nums = {
one: 1,
two: 2,
three: 3,
four: 4,
five: 5,
six: 6,
seven: 7,
eight: 8,
nine: 9,
zero: 0,
};
numbers = numbers.split("");
var check = "";
var numKeys = Object.keys(nums); // key값들만 뽑은 배열
for (let i = 0; i < numbers.length; i++) {
check += numbers[i];
for (let j = 0; j < numKeys.length; j++) {
if (check === numKeys[j]) {
answer += String(nums[numKeys[j]]);
check = "";
}
}
}
return Number(answer);
}
Object.keys(배열)
을 이용해서 해당 key값들을 빼내고 check
의 문자열과 비교하면서 answer
에 값을 넣었다.function solution(numbers) {
const obj = {
zero: 0, one: 1, two: 2, three: 3, four: 4,
five: 5, six: 6, seven: 7, eight: 8, nine: 9
};
const num = numbers.replace(/zero|one|two|three|four|five|six|seven|eight|nine/g, (v) => {
return obj[v];
});
return Number(num);
}
replace
를 사용해서 해당 값을 obj
의 value값으로 바꿔서 반환했다.replace
는 매개변수가 찾는 값, 바꿀 값인데 두 번째 인자로 콜백함수를 사용할 수 있다는 사실을 알게되었다!replace(searchRegExp, replaceWith)