Re:NPM – "is-even", 160k weekly downloads
by Vilkku on Tuesday November 16, 2021 @12:05PM
(#29243066)
Looks like the author of these packages agrees. While the is-even and is-odd packages are under the i-voted-for-trump user with the description "This is a joke", the is-number package [1] is still kept under the main profile of the author, the repository is still active on GitHub and there are active issues.
Re:NPM – "is-even", 160k weekly downloads
by the_gipsy on Tuesday November 16, 2021 @12:02PM
(#29243027)
typeof v === "number"
The rest is parsing territory.
Re:NPM – "is-even", 160k weekly downloads
by Izkata on Tuesday November 16, 2021 @12:00PM
(#29242981)
“number" == typeof variable
Works for decimals, too.Although maybe you meant to include
"1"
In your examples?
Re:NPM – "is-even", 160k weekly downloads
by madeofpalk on Tuesday November 16, 2021 @12:05PM
(#29243065)
Unfortunately "not a number" is typeof "number"
"number" === typeof NaN
Returns true.
Re:NPM – "is-even", 160k weekly downloads
by dragonwriter on Tuesday November 16, 2021 @01:04PM
(#29244021)
I mean, it depends on context what “numbers” are acceptable. For an overly general solution:
const allowNumbers = {
all: () => true,
notNaN: n => !Number.isNaN(n),
finite: Number.isFinite,
integer: Number.isInteger,
smol: n => Math.abs(n) < Number.EPSILON,
lorge: n => n > Number.MAX_SAFE_INTEGER || n < Number.MIN_SAFE_INTEGER,
}
function isNumber(n, allow = allowNumbers.all) {
return ("number" === typeof n) && allow(n);
}This isn't bad, but for maintainability, it should be split into at least nine packages.
Re:NPM – "is-even", 160k weekly downloads
by marshray on Tuesday November 16, 2021 @02:45PM
(#29245481)
In the type of things that Javascript considers 'numbers', it's a value used to indicate that it's not of the type of things that math considers 'numbers'.
Re:NPM – "is-even", 160k weekly downloads
by organsnyder on Tuesday November 16, 2021 @12:32PM
(#29243490)
That's a tricky one that I think would depend on use case. Yes, of course NaN isn't a number, but it's still kind of a number, depending on context.
Re:NPM – "is-even", 160k weekly downloads
by ohgodplsno on Tuesday November 16, 2021 @12:54PM
(#29243828)
NaN is a float according to IEEE754. All numbers in Javascript being floats, it makes sense that typeof NaN === "number".
Now, the fact that IEEE754 is insane is something else, but JS does nothing wrong (aside from not having not-floats)
Re:NPM – "is-even", 160k weekly downloads
by Ginden on Tuesday November 16, 2021 @01:41PM
(#29244671)
> Now, the fact that IEEE754 is insane is something else, but JS does nothing wrong (aside from not having not-floats)
JS has BigInt - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...
Re:NPM – "is-even", 160k weekly downloads
by ohgodplsno on Tuesday November 16, 2021 @03:10PM
(#29245793)
BigInt is relatively recent, all things considered. JS only having floats is a conception flaw.
Re:NPM – "is-even", 160k weekly downloads
by frankincense on Tuesday November 16, 2021 @12:02PM
(#29243025)
typeof x === 'number' && !Number.isNaN(x)
Re:NPM – "is-even", 160k weekly downloads
by newsbinator on Tuesday November 16, 2021 @12:52PM
(#29243791)
This seems like the best solution.
Any weird edge cases against this one?
Re:NPM – "is-even", 160k weekly downloads
by JasonCannon on Tuesday November 16, 2021 @02:07PM
(#29244997)
Comparing it against the list of examples given in is-number, this solution does not properly handle numbers represented as strings, and it also recognizes Infinity as a number.
Re:NPM – "is-even", 160k weekly downloads
by TheCoelacanth on Tuesday November 16, 2021 @06:18PM
(#29247499)
Because strings aren't numbers and Infinity is a number
Re:NPM – "is-even", 160k weekly downloads
by JasonCannon on Tuesday November 16, 2021 @09:28PM
(#29248734)
Strings are the safest way to hold big numbers in JavaScript due to how JavaScript represents numbers. Also no, infinity is not a number. It's a concept.
Re:NPM – "is-even", 160k weekly downloads
by boomlinde on Thursday November 18, 2021 @04:28PM
(#29270827)
Numbers is a concept. For some purposes it is useful to consider a number that is infinite, which is why concepts like the extended real number line have been invented.
Re:NPM – "is-even", 160k weekly downloads
by mirekrusin on Tuesday November 16, 2021 @01:54PM
(#29244833)
+/- Infinity, better to use Number.isFinite.
Re:NPM – "is-even", 160k weekly downloads
by stagas on Tuesday November 16, 2021 @01:59PM
(#29244891)
Infinities.
Re:NPM – "is-even", 160k weekly downloads
by nsikorr on Tuesday November 16, 2021 @12:55PM
(#29243849)
Number.isFinite() does very well in most cases
Re:NPM – "is-even", 160k weekly downloads
by JohnHaugeland on Tuesday November 16, 2021 @12:01PM
(#29243010)
... typeof foo === 'number'
e.g: [1, "one", true, false, 0, "zero", null, undefined]
edit: also ["1", "0", etc]
edit 2: also [NaN]