JS & REACT
숫자와 문자가 섞인 문자열에서, 각 요소를 구분하는 방법
KANG_G1
2024. 5. 11. 15:35
알고리즘 문제를 해결하며 알게된 접근 방법 중 하나가 있었습니다.
그 동안 저는 숫자와 문자가 섞인 문자열이 있다면 Number(요소)를 통해
NaN 값인지, Number 타입의 값인지를 구분해왔는데요.
다른 분들의 풀이를 보며 Number 원시 래퍼 객체를 사용하지 않는 방법을 찾았고
신기해 이를 공유하고자 합니다.
기존에 구분하던 방법
const s = "1 box has 3 blue 4 red 6 green and 12 yellow marbles";
const extractionNum = s.split(' ').map((item)=> Number(item)).filter((num)=> !isNaN(num));
map 메서드 내부에서 Number 원시 래퍼 객체를 사용해주면 string type data는 NaN으로,
Number type data는 정상적으로 return 되어집니다.
새로 알게된 방법
const s = "1 box has 3 blue 4 red 6 green and 12 yellow marbles";
const extractionNum = s.split(' ').map((item)=> +item).filter((num)=> !isNaN(num));
해당 방법은 map 메서드 내부에서 item 앞에 + 연산자를 사용했는데요.
+ 연산자는 단항 연산자로 사용될 때 문자열을 숫자로 변환하려고 시도합니다.
따라서 map 메서드 내에서 +item이 사용되면, 각 item이 숫자로 변환되려는 시도를 하는데요.
만약 item이 숫자로 변환될 수 없는 문자열이라면 변환 실패에 이어 NaN으로 return됩니다.