Kata

Oh no, our Math object was “accidently” reset. Can you re-implement some of those functions? We can assure, that only non-negative numbers are passed as arguments. So you don’t have to consider things like undefined, null, NaN, negative numbers, strings and so on.

Here is a list of functions, we need:

Math.round()
Math.ceil()
Math.floor()

# My Solutions

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var _int, _float;

function checkPeriod(num) {
_float = num%1;
_int = num - _float;
}

Math.round = function(number) {
checkPeriod(number);
return _float >= 0.5 ? _int + 1 : _int;
};

Math.ceil = function(number) {
checkPeriod(number);
return _float > 0 ? _int + 1 : + _int;
};

Math.floor = function(number) {
checkPeriod(number);
return _int;
};

# Others

parseInt, isInteger 메소드를 적절히 사용

1
2
3
Math.floor = number => parseInt(number)
Math.round = number => Math.floor(number + 0.5)
Math.ceil = number => Number.isInteger(number) ? number : Math.floor( number + 1 )

# thoughts

  • 간단한 건 직접 구현해보는 것도 좋은 공부
  • MDN 폴리필도 꼭 한번씩 확인, 읽어보는 습관 갖기

references