string의 indexOf 함수 사용 시 결과는 number로 나온다.
조건문에서 0은 false, 0을 제외한 모든 숫자는 true가 된다.
function sliceCityFromAddress(address) {
// your code here
let shi = address.indexOf('시');
let doe = address.indexOf('도');
let space = address.indexOf(' ');
if (doe !== -1) {
let revise = address.slice(0, space) + address.slice(shi+1);
return revise;
} else if (doe === -1) {
let revise2 = address.slice(shi+2, address.length);
return revise2;
}
}
(doe !== -1)를 보면 도가 false가 아닌게 아닐 때 즉, true일 때를 확인하는 condition이다
보면서 (doe === 1)로 하면 안 되나?하고 생각을 했는데 생각해보면
let doe = address.indexOf('도')는 숫자가 결과값으로 나온다.
그렇기 때문에 조건문에서 조건 확인 시 숫자를 쓸 때 비교할 값이 숫자일 때 사용에 주의 할 필요가 있다.
Number(), parseInt(), parseFloat()
let num1 = '1234';
let num2 = '1234.56$';
console.log(Number(num1)); // 1234
console.log(Number(num2)); // NaN
console.log(parseInt(num2)); // 1234
console.log(parseFloat(num2)); // 1234.56
세 함수 모두 data type을 string에서 number로 변환시켜주지만 차이가 있다.
1. Number() : 문자형 숫자 외의 다른 문자가 들어가면 NaN(Not a Number)가 나온다.
2. parseInt() : 정수로 변환한다.
3. parseFloat() : 소수점까지 변환한다.