Определить из строки число / ноль / строку
Здравствуйте!
Подскажите, как правильно определить из строки число. Вот для примера у меня три переменных. Изначально все они являются строками: let a = '5'; let b = 'qwerty'; let c = '0'; // ноль Мне нужно '0' и '5' определить как числа. Как правильно делать проверку?
if (a ) { // ?????
let z = Number(a);
} else {
let z = a;
}
У меня есть свои решения которые мне не очень нравятся, поэтому я прошу подсказки решения у более опытных людей. |
MC-XOBAHCK,
if(a == +a) if(typeof +a === 'number') |
рони, спасибо! Реально круто. А я такую чушь писал...
Подскажите, а с нолём этот фокус правильно отработает? Мне нужно ноль загонять как число. |
Цитата:
let a = '000001', b = '0'; alert([+a == a, typeof +a === 'number',+b == b, typeof +b === 'number'] ); |
Я проверяю. Но в js ведь есть много разных ньюансов и странных поведений. Вы же вот не зря значение 000001 показали. В +a == a оно дало true. Поэтому я спрашиваю у опытных людей.
Вон и в учебнике чуть ли не на каждой странице есть раздел с особенностями в поведении. |
const isnum = (n )=> !isNaN(n - parseFloat(n))
alert([isnum('0'), isnum(''), isnum('0.0000000001')])
|
voraa, круто, а я когда-то такую хрень писал:
export function isNumber(value) {
if (typeof value === 'symbol') {
return false;
}
const val = '' + value;
return !isNaN(parseFloat(val)) && val.replace(/[^\d.]+?/gim, '').length === val.length;
}
|
|
| Часовой пояс GMT +3, время: 18:31. |