영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.
numbers는 소문자로만 구성되어 있습니다.numbers는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있습니다.1 ≤ numbers의 길이 ≤ 50numbers의 맨 앞에 올 수 없습니다.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)