나는 parseInt
생각하지 않는다 또는 parseFloat
여기에 어떤 쓸모가 있습니다.
return Math.max.apply(Math, Array.prototype.filter.call(arguments, function(value) {
return typeof value === 'number';
}));
arguments
가 함수에 전달 된 모든 인수를 포함하는 배열과 같은 객체입니다 당신은 단순히 값이 숫자와 filter out 아닌 모든 숫자 값인지 여부를 테스트 할 수 있습니다. 그러나 실제 배열이 아니기 때문에 배열 메서드를 사용하려면 Array.prototype.<method>.call
을 사용해야합니다.
.apply
을 사용하면 배열을 두 번째 인수로 전달하여 알 수없는 매개 변수 수가있는 함수를 호출 할 수 있습니다.
숫자 문자열을 허용하려는 경우. "123"
대신 isNaN
(일부 추가 경비 null
에 대한 빈 문자열)을 사용할 수 있습니다 null
및 ""
에 대한
return Math.max.apply(Math, Array.prototype.filter.call(arguments, function(value) {
return value != null && value !== "" && !isNaN(value);
}));
왜 추가 테스트? Number("")
과 Number(null)
은 모두 0
이므로 isNaN
은 두 가지 모두에 대해 false
을 반환합니다 (하지만이 값은 여전히 제외하고 싶습니다).
그래서 숫자 형식이 아닌 경우 Math.max()에서 제외 시키시겠습니까? – linstantnoodles