Oleg
Number.isFinite(Number('123'))
Или Number.isFinite(+'123')
Anonymous
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isFinite тут же все описано, контракт этой функции (и ссылка на стандарт для недоверчивых). В чем проблема?
Sergey
Number.isFinite(Number('123'))
"" не проходит
Oleg
"" не проходит
А какая задача?
Sergey
Или Number.isFinite(+'123')
Тоже "" не проходит)
Anonymous
Oleg
parseFloat
Oleg
Во
Oleg
Предложили уже
Oleg
НО
Oleg
Это автоматически означает что данные кривые передаются
Oleg
Но парсефлоат помогает тут, да
Anonymous
В общем надо регуляркой проверять, что все символы числа)
Oleg
Не обязательно
Oleg
Но можно и так
Anonymous
Sergey
А еще 123E+2
Дима
+- Infinite
Дима
и hex
Oleg
И кровь единорога
Sergey
мое решение кстати тоже на пустой строке валится)
Anonymous
isNumeric('123E+2'); true
Oleg
Так какая точная формулировка задачи?
Anonymous
Oleg
Проверить что это число десятичное?
Oleg
Ну вот, решение
Oleg
О чем этот весь диалог? :D
Sergey
О том что надо тоже но без window.isFinite
Anonymous
диалог о другой реализации. альтернативной и почему она не подходит)
Oleg
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isFinite#Polyfill
Oleg
Всё придумано до нас
Oleg
А хотя нет, оконный же нельзя
Oleg
А что за извращенская платформа?
Sergey
var isNumeric2 = (n)=>{ let n2 = +n; return n2 === parseFloat(n) && Number.isFinite(n2); }
Oleg
Ну и собственно достаточно в строку превратить аргумент и вернуть на инфинити или нан фалс
Sergey
test
Oleg
Ну и если через плюс не нан - то ок
Oleg
Так что решение не сложное
Anonymous
тесты хорошие делаете, может ещё скорость замерите как в прошлый раз?
Oleg
Только там же из финити, только намберовый юзается
Oleg
Или так можно?
Sergey
Еее. Мы по кнону. Хоть и меленно наверняка)))
Sergey
Или так можно?
Ругались именно на глобальный
Oleg
Так не интересно тогда :D
Anonymous
ЖС даёт альтернативы, если вникать в тонкости языка)
Sergey
Кстати это я еще дурью маялся похоже
Anonymous
просто его нужно уметь готовить и знать все тонкости)
Sergey
Number.isFinite(+n); же эквивалентно isFinite(n) выходит
Oleg
Точка от скобки, да
Sergey
т.е. можно было var isNumeric2 = (n)=>{ return !Number.isNaN(parseFloat(n)) && Number.isFinite(+n); }
Anonymous
Number.isFinite(+true); true
Sergey
Number.isFinite(+true); true
Ну... не эквивалент. Но с левой частью тест проходится)
Anonymous
да
Sergey
isFinite(true) тоже true
Anonymous
ну что теперь в транспилятор эту конструкцию пустим? :)
Oleg
Так вот оно что
Oleg
А я то думаю что за извращенства
Oleg
Если у вас там ифы запретят - на if тоже есть полифил
Anonymous
по сути ничего не меняется
Anonymous
=)))
Sergey
ну что теперь в транспилятор эту конструкцию пустим? :)
я если честно не понял что это значит)
Anonymous
я если честно не понял что это значит)
это я про babel, но ничего по сути не поменялось, только функция-стрелка преобразилась
Sergey
Если у вас там ифы запретят - на if тоже есть полифил
Есть даже кое что покруче :D switch (value) { case true: break; case false: break; default: break; }
Дима
Если у вас там ифы запретят - на if тоже есть полифил
Если запретят if то можно всё на лямбдах описать
Дима
Стрелочные функции безо всего остального вообще уже являются полными по тьюрингу
Дима
Правда тогда получится не жс а хаскель
Anonymous
Anonymous
не работает такой IF
Oleg
Я знаю с массивами полифил
Oleg
[elseFn, ifFn][condFn()]()
Oleg
На лямбдах ещё не видел
Oleg
Или видел, но не принял как на лямбдах
Anonymous
Дима
Да