functiontoNumber(text) {
const s = String(text).trim();
if (s === '') returnnull;
const n = Number(s);
returnNumber.isFinite(n) ? n : null;
}
console.log(toNumber('42'));
console.log(toNumber('3.14'));
console.log(toNumber('42px'));
console.log(toNumber(''));
出力書き換えて実行できます
Ctrl+Enter でも実行JS · UTF-8
42
3.14
null
null
example.js
const inputs = ['42', '3.14', '42px', '', ' 7 ', 'あ', '0x1f', '1e3'];
for (const s of inputs) {
console.log(
JSON.stringify(s).padEnd(8),
'Number:', String(Number(s)).padEnd(6),
'parseInt:', String(parseInt(s, 10)).padEnd(6),
'parseFloat:', parseFloat(s),
);
}
出力書き換えて実行できます
Ctrl+Enter でも実行JS · UTF-8
"42" Number: 42 parseInt: 42 parseFloat: 42
"3.14" Number: 3.14 parseInt: 3 parseFloat: 3.14
"42px" Number: NaN parseInt: 42 parseFloat: 42
"" Number: 0 parseInt: NaN parseFloat: NaN
" 7 " Number: 7 parseInt: 7 parseFloat: 7
"あ" Number: NaN parseInt: NaN parseFloat: NaN
"0x1f" Number: 31 parseInt: 0 parseFloat: 0
"1e3" Number: 1000 parseInt: 1 parseFloat: 1000
functiontoNumber(text) {
if (typeof text !== 'string') returnnull;
const s = text.trim();
if (s === '') returnnull;
const n = Number(s);
returnNumber.isFinite(n) ? n : null;
}
for (const s of ['42', '3.14', '', ' ', '42px', 'あ', '1e3', 'Infinity']) {
console.log(JSON.stringify(s).padEnd(10), toNumber(s));
}